微服务架构的优点和挑战
⼀ 微服务的优点
1 易于开发和维护:⼀个微服务只会关注⼀个特定的业务功能,所以它业务清晰、代码量少。开发和维护单个微服务相当简单。⽽整个应⽤是若⼲个微服务构建⽽成的,所以整个应⽤也被维持在⼀个可控状态。
2单个微服务启动较快:单个微服务代码量较少,所以启动会⽐较快。
3 局部修改容易部署:单个应⽤只要有修改,就得重新部署整个应⽤,微服务解决了这样的问题。⼀般来说,对某个微服务进⾏修改,只需要重新部署这个服务即可。
4 技术栈不受限:在微服务架构中,可以结合项⽬业务及团队的特点,合理选择技术栈。例如某些服务可以使⽤关系型数据库Mysql;某些微服务有图形计算需求,可以使⽤Neo4j;甚⾄可根据需求,部分微服务使⽤Java开发,部分微服务使⽤Node.js开发。
5 按需收缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级CPU或者增加节点。
综上,单体应⽤架构的缺点,恰恰是微服务的优点,⽽这些优点使得微服务看起来简直⾮常完美。然⽽完美的东西并不存在,就像银弹不存在⼀样。微服务存在⼀些挑战。
⼆ 微服务架构⾯临的挑战
1 运维要求较⾼:更多的服务意味着更多的运维投⼊。在单体架构中,只需要保证⼀个应⽤的正常运⾏。⽽在微服务中,需要保证⼏⼗甚⾄⼏百个服务正常运⾏与协作,这给运维带来了很⼤的挑战。
2 分布式固有的复杂性:使⽤微服务构建的是分布是系统。对于⼀个分布式系统,系统容错、⽹络延迟、分布式事务等都会带来巨⼤的挑战。
分布式和微服务的关系3 接⼝调整成本⾼:微服务之间通过接⼝进⾏通信。如果修改某⼀个微服务API,可能所有使⽤该接⼝的微服务都需要调整。
4 重复劳动:很多服务可能都会使⽤相同的功能,⽽这个功能并没有达到分解为⼀个微服务的程度,这个时候,可能各个服务都会开放这⼀功能,从⽽导致代码重复。尽管可以使⽤共享库来解决这个问题(例如可以将这个功能封装成公共组件,需要该功能的微服务引⽤该组件),但共享库在多语⾔环境下就不⼀定⾏得通。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论