微服务的优缺点
来源:互联网 发布:淘宝退货怎么寄件 编辑:程序博客网 时间:2024/06/06 07:45
转载自http://dockone.io/article/394
服务简单,只关注一个业务功能
在James看来,传统的整体风格的架构在构建部署和扩展伸缩方面有很大的局限性,其服务端应用就像是一块铁板,笨重且不可拆分,系统中任何程序的改变都需要整个应用重新构建和部署新版本。在进行水平扩展时也只能整个系统扩展,而不能针对某一个功能模块进行扩展。
而微服务架构将系统以组件化的方式分解为多个服务,服务之间相对独立且松耦合,单一功能的改变只需要重新构建部署相应的服务即可。每个微服务可由不同团队开发
传统的开发模式在分工时往往以技术为单位,比如UI团队、服务端团队和数据库团队,这样的分工可能会导致任何功能上的改变都需要跨团队沟通和协调。而微服务则倡导围绕服务来分工,不同的服务可以采用不同的技术来实现,一个团队中应该包含开发所需的所有技能,比如用户体验、数据库、项目管理。微服务是松散耦合的
微服务架构抛弃了ESB复杂的业务规则编排、消息路由等功能,微服务架构中服务是高内聚的,每个服务都会处理相应的业务,所有的业务逻辑应该尽量在服务内部处理,且服务间的通信尽可能的轻量化,比如使用Restful的方式。可用不同的编程语言与工具开发
传统的软件开发中经常会使用同一个技术平台来解决所有的问题,而经验表明使用合适的工具做合适的事情会让开发变得事半功倍。微服务架构天生就具有这样的特性,我们可以使用Node.js来开发一个简单的报表页面,使用C++来编写一个实时聊天组件。
运维开销
更多的服务也就意味着更多的运维,产品团队需要保证所有的相关服务都有完善的监控等基础设施,传统的架构开发者只需要保证一个应用正常运行,而现在却需要保证几十甚至上百道工序高效运转,这是一个艰巨的任务。DevOps要求
使用微服务架构后,开发团队需要保证一个Tomcat集群可用,保证一个数据库可用,这就意味着团队需要高品质的DevOps和自动化技术。而现在,这样的全栈式人才很少。隐式接口
服务和服务之间通过接口来“联系”,当某一个服务更改接口格式时,可能涉及到此接口的所有服务都需要做调整。重复劳动
在很多服务中可能都会使用到同一个功能,而这一功能点没有足够大到提供一个服务的程度,这个时候可能不同的服务团队都会单独开发这一功能,重复的业务逻辑,这违背了良好的软件工程中的很多原则。分布式系统的复杂性
微服务通过REST API或消息来将不同的服务联系起来,这在之前可能只是一个简单的远程过程调用。分布式系统也就意味着开发者需要考虑网络延迟、容错、消息序列化、不可靠的网络、异步、版本控制、负载等,而面对如此多的微服务都需要分布式时,整个产品需要有一整套完整的机制来保证各个服务可以正常运转。事务、异步、测试面临挑战
跨进程之间的事务、大量的异步处理、多个微服务之间的整体测试都需要有一整套的解决方案,而现在看起来,这些技术并没有成熟。
- 微服务的优缺点
- 微服务的优缺点
- 微服务的优缺点
- 微服务的优缺点
- 微服务的优缺点
- Martin Fowler谈微服务的优缺点
- 微服务的单体应用的优缺点对照
- 我也想写篇微服务的文章,以及微服务的优缺点
- 微服务理论与实践(三)-微服务架构的基本能力和优缺点
- 微服务理论与实践(三)-微服务架构的基本能力和优缺点
- 微服务介绍与优缺点分析
- 单体应用与微服务优缺点辨析
- 微服务的理解
- 微服务的IDL
- 微服务的注意事项
- 火到爆的微服务
- 微服务的概念
- atititi.soa 微服务 区别 联系 优缺点.doc
- OSVR-Vive
- 获取XML文件内容
- Junit hamcrest相关问题
- LSTM中隐层神经元的传播机制
- 未知:数列1——题解
- 微服务的优缺点
- 第六讲 单片机之c语言RS485通信
- sqoop mysql与HDFS互转
- Python3之字符编码及文件操作
- HDU4004The Frog's Games 二分
- Log4J2配置文件
- Android 操作SQLite基本用法
- 极光推送自定义通知栏样式
- 广播和通知的简单介绍