微服务进阶:微服务化改造思考路径

网友投稿 263 2022-09-10

微服务进阶:微服务化改造思考路径

一、改造背景

1、针对单体架构的web应用,底层依赖单一数据库。

2、单体应用显示出的痛点如下

1)宕机频繁:由于各个模块都部署在一起,所以任何模块之一出现问题都会导致整个应用崩溃。 2)启动慢:单体应用越来越大,导致应用启动速度越来越慢,长达十几分钟。 3)修复慢:开发效率低,由于模块之间耦合,本地调试,启动非常耗时,修复问题非常耗时。

3、改造过程需要以业务作为出发点,以用户为中心

1)提高用户满意度,通过容器平台方式提高系统应用稳定性和可用性。 2)加快功能实现,提高开发效率,帮助开发团队更快、更好地完成软件功能的开发、测试和发布。

二、改造范围

1、由于应用系统在数据层面的耦合度很高,所以需要循序渐进来完成整个改造过程:

从业务角度进行分拆,从非关键点功能开始,逐步扩大试点范围。

2、具体在确定要进行拆分的服务/模块/组件时,规则如下:

1)相对独立(业务独立,数据独立),对其他模块影响小。 2)三层架构(展示层,业务逻辑层,数据访问层)。 3)展示层可以通过反向代理从单体应用分流到微服务。 4)业务逻辑层可以通过RESTful/RPC客户端从进程内函数调用分流到微服务远程调用。 5)数据层由于耦合度高,暂保持原样,需要注意微服务操作的数据库表和调用存储过程是相对独立。避免与单体应用同时操作相同数据导致冲突。

3、一般改造过程,优先改造以下几种典型模块/服务比较适合开始进行微服务改造:

1)用户/账号管理 2)鉴权和session管理 3)偏好设置/配置 4)通知和通信服务 5)照片/多媒体/元数据 6)任务队列处理

三、改造目标

四、改造要求

1、业务要求需要对即将改造的模块有深刻的理解,包括:内部逻辑,边界,与其他模块的交互,使用的数据/存储过程是否与其他模块有交叉。

2、技术要求(以java为例,其他语言需替换为相应的技术栈)

1)必备项:熟练掌握java,spring MVC,SQL 2)使用过以下一项或多项: Spring Boot (简化开发) Spring cloud(理解微服务) Log4j/slf4j(日志设计,帮助分布式错误排查) OpenFeign(RESTful远程调用) RESTful API/JSON(微服务接口设计) SVN/Git (代码版本管理) Ant/Maven/Gradle(可重复自动构建) Swagger(API文档管理) JMS等消息处理(消息中间件) Redis/Memcached(分布式缓存) Nginx等负载均衡 jUnit/Powermock/Mockito/Wiremock等框架(自动化测试) Kibana(分布式日志查询) CI/CD(持续集成和部署) Docker(容器化) Kubernetes(容器编排) Linux常用命令 iptables等防火墙(网络问题排查)

五、其他问题

2、应用启动慢单体应用由于越来越大,不可避免的启动速度越来越慢。短期方案可考虑:性能调优、确定瓶颈、并进行针对性的优化。长期方案还是微服务化改造,把模块分拆以后,每个应用的可部署包体积会大幅减少,从而达到理想的启动速度。

3、与其他系统/平台集成

集成方式有几种: 1)开发平台完全运行在kubesphere:所有组件和平台本身都是支持容器化,所有组件和平台本身支持安装在kubernetes上。 2)开发平台仅把应用部署在Kubesphere:需要开发平台对接kubesphere,包括开发平台上的应用可以容器化,开发平台上的应用可以打包成K8S格式。 3)开发平台仅把依赖的第三方组件部署在Kubesphere KubeSphere自带应用仓库,可以一键部署标准组件,比如zookeeper,Tomcat等,只需要开发平台与Kubesphere网络互通即可。但如开发平台使用的是修改过的组件,则需要开发平台将此组件容器化并与K8S适配才可以使用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【K8S】Helm包管理工具的简单介绍和安装方法
下一篇:Flannel 同节点通信
相关文章

 发表评论

暂时没有评论,来抢沙发吧~