美文网首页dubbo
JAVA单服务应用拆分成多个服务的实践(1)--拆分的设计思想

JAVA单服务应用拆分成多个服务的实践(1)--拆分的设计思想

作者: 爱余星痕 | 来源:发表于2019-03-03 21:02 被阅读0次

    最近跟朋友在沟通,问我私下作的开发平台支不支持拆分成多个微服务,让可以支持水平扩展.
    我回去细想了一下,确实,现在做项目,如果不搞成多个微服务,都不好意思说,我是搞IT的.
    说做就做,将自己的项目拆成多个微服务.

    • 拆分目标:
    1. 支持ALL in One, 即还是可以单体应用部署,这样在小企业可以快速实施,因为小企业对性能要求不高
    2. 支持多个应用服务,各服务的相互独立,服务之间的通讯使用dubbo,这样降低耦合,可以快速持水平扩展.
      动手之前,先介绍一下自己做的开发平台吧:
    • 开发平台功能介绍


      总体功能

      有图有真相,截些图吧


      流程管理
      组织管理
      权限管理
      数据字典
      定时任务
      访问日志

      我自己做的平台,还不错吧,前台后台都是自己一个做的.暂时供学习用,后面可能考虑开源.
      回归主题,我们开始对平台的功能进行分解,划分哪些需要微服务化的,哪些不需要.

    1. 自动建表功能
      自动建表其实就是内部的一个功能,在应用启动时,根据PO对象自动建表,这个不可能做到微服务化,只能做为一个系统的组件
      自动建表的功能,如有兴趣,请参考我的文章
      给mybatis添加自动建表,自动加字段的功能
    2. 数据过滤功能
      数据过滤功能有两部分,分为过滤的拦截,及过滤功能的设置
      过滤的拦截应该做为一个组件,即一个功能jar包来合并成各个微服务中,
      而过滤功能的数据管理作为一个微服务,各个服务如有需要,从该服务中取该功能配置的数据
      该数据过滤的功能请参考文章通用数据级别权限的框架设计与实现
    3. 附件上传
      其实附件上传我一直很犹豫,是做为系统组件,还是微服务.理论上,附件承载了各个应用的业务附件数据,应该自己存储.这样附件不应该服务化, 但后面想想技术上,前端上传附件的地址应该只有一个,所以附件应该是微服务化.
    4. 组织管理
      这个微服务化,肯定没异义,对外输出组织的相关接口.
    5. 权限管理
      这里说的权限管理指的是系统资源及角色的管理.这个才需要做微服务化.
      而权限拦截功能是系统的组件,拦截的规则数据从权限管理微服务中获取
    6. 访问日志
      这个作为一个日志服务,系统每访问一个URL地址,向其发送一个kafka消息
    7. 定时任务
      定时任务分为定时任务的触发及定时任务日志.定时任务日志,合并到上面的日志服务中,这个是没什么问题.
      但定时任务的触发,我考虑了很久,让各个系统自己定时触发,还是做成一个微服务,如果做成一个微服务,触及到定时任务调用多个微服务,如何去寻找对应的服务呢.
      这点我想了很久,在后面的文章会提及具体怎么实现.
    8. 表单引擎
      肯定微服务化,没啥异义
    9. 流程引擎
      肯定微服务化,没啥异义
      总结完好,需要实现微服务化的功能有以下这些
      需要微服务的功能
      定好工作的边界及需求,动手开工,有些我已经完成了,我会边完成功能,边对过程进行总结上传,谢谢!
      [未完待续]

    相关文章

      网友评论

        本文标题:JAVA单服务应用拆分成多个服务的实践(1)--拆分的设计思想

        本文链接:https://www.haomeiwen.com/subject/frpmuqtx.html