微服务有哪些优缺点?

优点:

独立的可扩展性,每个微服务都可以独立进行横向或纵向扩展,根据业务实际增长情况来进行 快速扩展;

独立的可升级性,每个微服务都可以独立进行服务升级、更新,不用依赖于其它服务,结合持 续集成工具可以进行持续发布,开发人员就可以独立快速完成服务升级发布流程;

易维护性,每个微服务的代码均只专注于完成该单个业务范畴的事情,因此微服务项目代码数 量将减少至IDE可以快速加载的大小,这样可以提高了代码的可读性,进而可以提高研发人员的生产效率;

语言无关性,研发人员可以选用自己最为熟悉的语言和框架来完成他们的微服务项目(当然, 一般根据每个公司的实际技术栈需要来了),这样在面对新技术或新框架的选用时,微服务能够更好地进行快速响应;

故障和资源的隔离性,在系统中出现不好的资源操作行为时,例如内存泄露、数据库连接未关闭等情况,将仅仅只会影响单个微服务;

优化跨团队沟通,如果要完全实践微服务架构设计风格,研发团队势必会按照新的原则来进行 划分,由之前的按照技能、职能划分的方式变为按照业务(单个微服务)来进行划分,如此这般团队里将有各个方向技能的研发人员,沟通效率上来说要优于之前按照技能进行划分的组织架构;

原生基于“云”的系统架构设计,基于微服务架构设计风格,我们能构建出来原生对于“云”具 备超高友好度的系统,与常用容器工具如Docker能够很方便地结合,构建持续发布系统与 IaaS、PaaS平台对接,使其能够方便的部署于各类“云”上,如公用云、私有云以及混合云。

缺点:

增加了系统复杂性;

运维难度增加;

本地调用变成RPC调用,接口耗时增加;

可能会引入分布式事务。