这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天,今天学习的课程是Go 语言微服务。
什么是微服务
- 微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。就像我们要写一本书,一共有三个章节,为了敏捷开发,我们让三个人 每人负责一个章节去写。那么这么做有什么好处呢?
优点
1.本来一个人写一本书,模块划分之后,每个人都可以参与进去开发,而且每个人都是独立开发的,不受限与第三人,提高开发效率
2.每个人写怎么写都可以,你可以用手机,也可以用ipad ,可以根据不同的适用场景采用不同的技术,也就是混合技术栈。
3.三个人如果有一个人没写完,或者一个人写错了,并不影响另外两个人的进度,也就是故障隔离,降低了开发风险,提高了系统的高可用。
4.每个人都可以根据业务需求,进行功能的扩展和缩减,粒度灵活缩放
缺点(缺点不是不能克服,但是你要为克服缺点付出代价)
那么微服务只有好处吗?有没有带来哪些不便呢?
- 要求系统提供的服务很大程度上是分离的,为什么?还是刚才那个栗子,我们写一本书,如果你写西游记,一章一个故事,这没有问题,每个人都有一个妖魔鬼怪的故事,但是如果你写水浒传或者红楼梦,很多环节都是承上启下的,做不到场景的分离,就没法实现业务分离。
- 微服务业务单一,注重单一功能,能读懂上面的例子,这个就很好懂
- 每个模块由单个团队或者个人开发,增加了人员的交流成本,比如联调,比如编码
- 当一个请求出现问题,排查错误比较困难,可能每个模块自检都没有问题,但是联调的时候出现各种异常,每个模块都要做好单元测试,增加链路日志
- 由于各个服务的远程调用而延长了整个请求的时间
- 数据的事务性和原子性保证,可能由于某种原因,积分模块扣除积分成功,而订单模块导致下单失败