前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA单服务应用拆分成多个服务的实践(1)--拆分的设计思想

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

作者头像
星痕
发布2019-03-12 16:50:53
1.4K0
发布2019-03-12 16:50:53
举报
文章被收录于专栏:JAVA后端开发JAVA后端开发

最近跟朋友在沟通,问我私下作的开发平台支不支持拆分成多个微服务,让可以支持水平扩展.

我回去细想了一下,确实,现在做项目,如果不搞成多个微服务,都不好意思说,我是搞IT的.

说做就做,将自己的项目拆成多个微服务.

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

总体功能

有图有真相,截些图吧

流程管理

组织管理

权限管理

数据字典

定时任务

访问日志

我自己做的平台,还不错吧,前台后台都是自己一个做的.暂时供学习用,后面可能考虑开源.

回归主题,我们开始对平台的功能进行分解,划分哪些需要微服务化的,哪些不需要.

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

需要微服务的功能

定好工作的边界及需求,动手开工,有些我已经完成了,我会边完成功能,边对过程进行总结上传,谢谢!

未完待续

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档