哈喽各位同学们大家好呀,小编今天带着开发者学院中课程“微服务架构的优缺点”干货总结来了~一起学习新课程吧!
课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇
课程名称:微服务架构Microservice的优缺点
课程地址:https://developer.aliyun.com/learning/course/60/detail/1106
图谱名称:Alibaba Java 技术图谱
图谱地址:https://developer.aliyun.com/graph/java
微服务架构Microservice的优缺点
一、微服务Microservice优点
(一)微服务特点一:快速响应需求变化
微服务架构诞生在SOA时代,在移动互联网时代蓬勃发展并崛起,从早期的互联网公司开始,快速过渡到现在的移动互联网公司,都在大量使用微服务架构,包括大家熟悉的淘宝、微博、微信、抖音等平台,都是很典型的代表。微服务架构很重要的特点就是:快速响应需求变化,业务迭代非常快,每月甚至每周都会有大量的改版信息。
之前在采用单体巨型非微服务架构有个问题,系统里面的业务模块非常多,大家一起发布、修改、编译很难进行协调,可能是几千人的开发团队,很难做到敏捷开发、发布、上线。
使用微信、微博、淘宝、抖音超过5年会感受到,迭代非常快,而且经常上线新功能,比如支付宝之前只有支付担保交易,现在可以在上面交水电费、做地铁、城市健康码功能等。淘宝的各种新功能,比如生鲜、直播等。抖音之前只做短视频,现在也开始做电商,可以评论、加好友等等。
总的来说,之前单体巨型架构模式,已经无法适应快速变化的业务发展需求。快速响应需求变化是微服务架构的重要特点。
微服务:船小好调头
微服务本质上是小微程序,相比较来说,很重要的特点是拆分概念。微服务首先是拆分,把大的拆成小的,把整体拆成部分。每个部分单独开发迭代,是很重要的优势,在中国书画里面叫船小好调头。
中国是公有制为主体,私有制作有效补充的经济体制结构。而且私有企业民营企业,要求船小好调头,能够更灵活的根据市场需求调整经营策略。比如现在的全民电商、全民直播,是商业的微型化、敏捷化的表现形式,我们的微服务是一样的道理,各个领域有很多概念相通。
微服务优点:
微服务优点是拆完以后更灵活,各个子系统可以独立开发、独立测试、独立部署、独立进程,最后在集成。
比如账号系统比较稳定,基本上不用改,前期有三到五个成员开发,后期只需要一个人维护。后面有新业务,比如淘宝直播、菜鸟快递、余额宝项目上线,再成立新的团队,进行快速开发。现在很多项目都是前期只有一个小组,后面再组建团队上线很多新的功能,比如微信,是从腾讯内部孵化出来,前期只成立了很小的项目组,后期做成上万人的公司。支付宝也是淘宝内部孵化的项目。这种公司成立以后,又开始孵化出更多的业务部门。
独立开发拆分以后自主性更强了,独立开发、独立测试、独立部署、独立进程,是微服务快速响应业务需求变化的重要特点。
(二)特点二:敏捷开发、敏捷运维DevOps
早期20年前提出敏捷开发,在微服务时代依然适用,本质上就是“快”,提升开发运维的效率,快速响应用户的需求。
传统软件公司为什么不适合大量推广微服务,比如工厂的管理软件,用VB开发,用wondows xp 、wondows 7都可以直接解决问题,20年不变,这个项目不用敏捷开发也行,开发完成后用两个成员维护着。业务非常稳定,没有发展,或只在某个阶段平稳发展,比如银行系统,国内四大银行,早期的Java系统,基本上都是oracle或DB2框架开发,基本上都不会改,因为很多代码封装在存储过程中,改的话容易出问题。新项目可能开始用微服务架构,拆分出独立的数据库,独立架构。
微服务架构的优点:
微服务架构的优点,本质上就是拆完以后更好开发。通常是HTTP协议,能信使用语言中立协议等,优点和缺点是相对某个技术架构的,不是绝对的。
总结如下:
1. 易于替换;
2. 独立部署;
3. 专注某个任务;
4. 高度解耦;
5. 基于功能进行组织:商品、支付、评论、机票、新闻、酒店、游戏等;
6. 服务可以使用不同的语言、系统、平台;
7. 通信使用语言中立的协议;
8. 通常是http;
9. 独立技术栈;
10. 易于测试。
巨型服务VS微服务
早期的单体巨型服务,分层架构,适用于比较稳定的系统,比如银行系统,现在还在使用。随着业务的发展变化,可以更换新的架构。微服务架构非常灵活,合适迭代发展快的项目,比如当下流行的电商业务。
二、微服务Microservice缺点
微服务不是银弹:
微服务并不适合所有的场景,因为一旦拆开,通信成本就会上升,架构复杂度会上升,开发人员需要更多,集成测试、部署都会变得更复杂,所以技术选型一定要慎重。
微服务的优缺点:
合格的架构师,应该以公司业务需求作为出发点,但是很多架构师设计架构的时候,实际并不是这样,有很多其他因素在,会设计不可维护的架构。比如为了对外宣传、便于接到业务,年长的架构师担心被公司裁掉,设计不可维护的架构等。
正常情况下,需要从成本、复杂度、测试、监控等方面出发,架构服务。如果在业务快速创新的公司,选择微服务架构,如果在业务比较稳定的公司,可以选择单体架构或者早期的架构。
微服务优点:
① 开发简单;
② 技术栈灵活;
③ 协议简单;
④ 服务独立无依赖;
⑤ 独立按需扩展;
⑥ 可用性高;
⑦ 高伸缩性;
⑧ 易于维护单一服务。
微服务的缺点:
① 架构复杂;
② 多服务运维难度;
③ 系统部署依赖;
④ 服务间通信成本;
⑤ 数据一致性;
⑥ 系统集成测试;
⑦ 重复工作;
⑧ 性能监控。