架构设计
软件架构
代码层次
主要分为3个层次:isass-core, isass-api, 微服务项目,其中微服务项目,又分为2个 maven 模块:api, service
isass-core
isass-core 是 isass 的底层核心代码,与业务无关,主要封装了常用的框架,工具等,主要有 mq, net, web, database等
isass-api
当有2个微服务循环依赖时,就需要把其中1个微服务的被另1个微服务用到的 api 放在 isass-api
微服务项目
1个具体的微服务项目内部一般包括2个 maven 模块:api, service
- api
微服务的实体定义,事件定义,缓存服务,微服务对外接口,rpc 实现等
- service
用于编写业务逻辑和 controller,程序员大部分时间,都和 service 打交道。
2选1启动
由于不同企业的发展阶段不同,有些资金雄厚,可以提供大量服务器以支撑微服务的运行;有些资金紧张,只能提供1,2台服务器,此时就不适合微服务部署。
isass 通过 spring 的 bean 加载机制实现支持自主选择
单体
微服务
2种方式启动。
微服务启动
例如有 商品微服务
, 订单微服务
, 消息微服务
, 会员微服务
, 商城微服务
启动 service 模块的 {ms}App, 默认是微服务方式启动,每个微服务独立部署,拥有独立进程。微服务之间通讯通过rpc(默认是feign)通信
单体启动
如果采用单体方式部署,则可以以 商城微服务
为主,在 商城微服务
的 service pom 中依赖其他几个微服务的 service,并在 商城微服务
的配置文件配置 start.microservice.enabled=false
,启动 service 模块的 {ms}App 即可单体启动,所有微服务都在同一个进程内,微服务之间通讯直接通过进程内部本地调用。
这样就可以在开发阶段,以微服务的标准进行开发,在部署阶段,根据企业情况选择1种方式部署。