为什么需要微服务?微服务是什么?
01 大一统服务化实践应用场景: 01团队不大;02软件复杂度不高 ;由此带来的运维和各种基础设施的要求也不高,但是随着软件复杂度越来越高,会越来越捉襟见肘,同时带来以下问题:
开发:功能膨胀造成功能拆分给不同的开发人员,后果是大家在提交代码时频繁冲突,并且需要解决冲突,单一的开发项目成为所有人的工作瓶颈;
交付:要集成到一起交付,如果有一部分功能没有准备好整个服务就不能交付,大大降低了交付效率;
02 微服务:任何一个功能单元独立开发完毕后就可以独立交付,通过并行开发并行交付,从而可以提升团队效率,扩展组织能力;
- 扩展性:对于Java开发者来说,web应用都要以WAR包部署在TOMCAT等web容器中运行,即使每个war包提供的服务是独立的微服务,但是会受限于web容器整体的扩展能力。所以现在都是一个TOMCAT容器只部署一个WAR包,然后横向复制和扩展多个TOMCAT实例来扩展整个应用服务集群;
- 隔离性:每个微服务都成为独立的运行单元之后,互相之间不会受影响,不会犹由于一个微服务宕掉,从而影响整个服务框架,只会把伤害限制在制定区域;
- 互通性:这个不是微服务直接带来的好处,由于服务拆分,多语言特性,微服务之间的互通变成了一个问题,所以在设计初期对于语言和微服务之间的接口和协议统一规划;所以标准化变得异常重要