最近杜老师受邀为某大型证券公司做了一次2天的微服务架构培训,涉及:微服务架构模式、服务拆分(DDD)、通信/序列化、分布式事务/锁机制、Dubbo等常见微服务框架内容。由于内容暂须保密,所以省略具体讲解内容,下面仅截取部分我认为更值得留下的思考。
一、为什么需要微服务?
首先,杜老师抛出了一个问题:为什么要做微服务?
虽然每个人都有自己的哈姆雷特,但是在软件工程中,有很多是需要划定边界的,在做任何技术选型时,也都需要明晰的缘由。
这里直接给出,走向微服务的原因:
- 水平扩展
- 高可用性
- 数据压力
- 系统升级
- 团队协作
二、微服务拆分时机?
在大部分人眼中,微服务中最大的难题就是:如何拆分?实际上,比这更重要的问题时:什么时候拆分?
毕竟做任何事情,都是需要时机的,所谓“天时地利人和”。
当一个应用系统需要做拆分时,肯定要与两个方面强相关,一个是业务、一个是组织架构。其中,业务倒逼技术做服务化,组织架构保障了服务化建设最终成功。
三、微服务拆分步骤
关于如何拆分服务化这块,我这里给出一个清晰的步骤:
在第二步的定义服务中,包含了与DDD(领域驱动设计)相关的知识,具体含义有空杜老师可以专门写文阐述,不过我相信有经验的工程师还是可以看明白的。
四、微服务工程化思维
杜老师一直以来的观点是:工程化是软件服务最重要的成功保障。
而代码,并不是。
五、框架选型?
选型方面,杜老师给的比较简单粗暴(仅个人意见,供大家参考):
1、假如没有遗留债务,可以选Dubbo
2、假如要选Spring系列,可以先考虑SpringCloud Alibaba
原因在于:阿里巴巴这边在对Dubbo/SpringCloud的支持上,还是非常不错的,除了兼容原有框架之外,也整合了nacos、sentinel、seata等进入体系内,确实形成了一站式微服务解决方案,没有必要费其他心。
另外呢,假如是中小企业,杜老师是非常推荐大家使用云服务的,比如阿里云提供的基于云原生的微服务架构系列平台,是非常建议大家尝试的。
附一张培训照吧