技术选型-微服务
Posted happybeibei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术选型-微服务相关的知识,希望对你有一定的参考价值。
【微服务带来的好处】
1.解耦合,维护和部署简单
根据模块系统分开,一个模块需要修改的时候,对其他模块的影响最小,甚至没有影响,发布的时候只发布被修改的模块即可。
微服务关键需要边界定义清楚 。
2.服务可作为商品单独销售
根据业务内容将服务分开,各个业务服务可以单独部署,对其他模块没有依赖。业务服务可以作为单独的商品销售。
3.系统支持不同框架或开发语言
每个单体应用可以使用不同的开发语言或框架。不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。
4.便于团队协作
由于服务分开,当跨团队或跨公司或跨区域的时候,降低团队之间的强依赖关系。
易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务。
5.易于扩展
当某一项服务的性能到达瓶颈,那么我们只需要增加该服务的节点数即可,其他服务无需变化。这种扩展更加具有针对性,能够充分利用计算机硬件/软件资源。
而且只扩展单个服务影响的范围较小,从而系统出错的概率也就越低。微服务在重构后也能通过横向扩展,以较低的成本来增大系统的吞吐量,能够针对系统的瓶颈服务更有效的使用资源
6.改善故障隔离。一个服务宕机不会影响其他的服务
【使用微服务带来的弊端(挑战)】
1.微服务将原来的函数式调用改为服务调用,不管是用rpc,还是http rest 方式,都是增大系统整体延迟。这个是再所难免的,这个就需要我们将原来的串行编程改为并发编程甚至异步编程,增加了技术门槛。
2.微服务需要更多的技术全局考虑,
比如服务之间的通信,调用链的监控,以及资源的分配,服务地址目录,服务健康度,部署困难,服务依赖问题,数据库分区问题。
3.开发者需要应对创建分布式系统所产生的额外的复杂因素
?测试工作更加困难
?出现问题时定位问题的难度
?需要采用服务间的通讯机制
?很难在不采用分布式事务的情况下跨服务实现功能
?跨服务实现要求功能要求团队之间的紧密协作
以上是关于技术选型-微服务的主要内容,如果未能解决你的问题,请参考以下文章