技术选型-微服务

时间:2020-05-16 16:39:25   收藏:0   阅读:99

【微服务带来的好处】

1.解耦合,维护和部署简单
根据模块系统分开,一个模块需要修改的时候,对其他模块的影响最小,甚至没有影响,发布的时候只发布被修改的模块即可。
微服务关键需要边界定义清楚 。

2.服务可作为商品单独销售
根据业务内容将服务分开,各个业务服务可以单独部署,对其他模块没有依赖。业务服务可以作为单独的商品销售。

3.系统支持不同框架或开发语言
每个单体应用可以使用不同的开发语言或框架。不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。

4.便于团队协作
由于服务分开,当跨团队或跨公司或跨区域的时候,降低团队之间的强依赖关系。
易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务。

5.易于扩展
当某一项服务的性能到达瓶颈,那么我们只需要增加该服务的节点数即可,其他服务无需变化。这种扩展更加具有针对性,能够充分利用计算机硬件/软件资源。
而且只扩展单个服务影响的范围较小,从而系统出错的概率也就越低。微服务在重构后也能通过横向扩展,以较低的成本来增大系统的吞吐量,能够针对系统的瓶颈服务更有效的使用资源

6.改善故障隔离。一个服务宕机不会影响其他的服务

【使用微服务带来的弊端(挑战)】

1.微服务将原来的函数式调用改为服务调用,不管是用rpc,还是http rest 方式,都是增大系统整体延迟。这个是再所难免的,这个就需要我们将原来的串行编程改为并发编程甚至异步编程,增加了技术门槛。

2.微服务需要更多的技术全局考虑,
比如服务之间的通信,调用链的监控,以及资源的分配,服务地址目录,服务健康度,部署困难,服务依赖问题,数据库分区问题。

3.开发者需要应对创建分布式系统所产生的额外的复杂因素
?测试工作更加困难
?出现问题时定位问题的难度
?需要采用服务间的通讯机制
?很难在不采用分布式事务的情况下跨服务实现功能
?跨服务实现要求功能要求团队之间的紧密协作

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!