微服务
为解决单体应用问题,1、打包,编译,部署困难;2、代码分支管理困难;配置管理小组,代码提交冲突解决;3、数据库连接耗尽;4、新增业务困难;(上百万行代码)
解决方案:拆分,分布式服务,微服务,将模块独立部署,降低系统耦合
纵向拆分:大应用拆分为小应用,应用系统
横向拆分:复用的共用的业务拆分,部署为独立的微服务(集群),订单模块,用户模块,服务的方式调用,用接口调用,接口规范定义好
微服务好处:
1、改一个小模块打包容易,用请求调用测试没问题即可,独立部署;
2、改模块,小团队内部改,只需要保证向前兼容,还支持以前的服务接口,即可自行维护;
3、业务分库,一个服务连接一个业务库,用户库,不需要那么多数据库连接;
4、新同学只负责一个小模块开发,更容易参与和上手,接口兼容就可以发布新的版本;
小模块,通过 rpc 远程调用进行访问,关系更清晰。
Dubbo 微服务框架(Spring Cloud 同):Java 微服务框架,远程微服务调用过程
Dubbo 框架的失效转移:如果负载均衡失效,则由服务框架从注册列表中再选一个服务器进行调用,实现失效转移。
Dubbo 对应用的最少侵入:客户端依赖的是服务接口包,dubbo 完成接口包的实现类。可以本地调用和远程调用。
服务 Requester 依赖 Dubbo 框架进行远程调用,Dubbo 框架和 requester 是集成在一起的,以 SDK 包的方式提供给 requester 程序,requester 通过 SDK 包进行远程调用。
微服务架构如何落地
业务先行,理顺业务的边界和依赖,哪些服务是可以独立部署的,这些服务之间的依赖关系如何,哪些功能要放在哪些服务中。如何发现业务的边界在哪里,模块的边界和依赖关系如何设计,模块内部包含哪些功能,这是微服务中最重要的一点。
先有独立的模块,再有分布式服务。先把模块关系拆分清楚,组件关系理清楚。
微服务的目标是什么?这些服务提供业务级的复用,提供给其他系统;维护的边界清晰,业务开发,产品职责清晰;微服务集群提升性能;
微服务为什么要服务注册?
做负责均衡时,如何知道服务在哪里;负载均衡要自己配置;新增加服务器,要改配置重新发布;
要自己解决这些问题,带来开发效率,管理效率,灵活性问题;
版权声明: 本文为 InfoQ 作者【qh12346】的原创文章。
原文链接:【http://xie.infoq.cn/article/30ab69311ba548d43e10c4d13】。文章转载请联系作者。
评论