微服务架构的优势
微服务可通过分布式部署,大幅提升您的团队和日常工作效率。您还可以并行开发多个微服务。这意味着更多开发人员可以同时开发同一个应用,进而缩短开发所需的时间。
加速做好面市准备
由于开发周期缩短,微服务架构有助于实现更加敏捷的部署和更新。
高度可扩展
随着某些服务的不断扩展,您可以跨多个服务器和基础架构进行部署,充分满足自身需求。
出色的弹性
只要确保正确构建,这些独立的服务就不会彼此影响。这意味着,一个服务出现故障不会导致整个应用下线,这一点与单体式应用模型不同。
易于部署
相对于传统的单体式应用,基于微服务的应用更加模块化且小巧,所以您无需为它们的部署操心。虽然对部署时的协作要求更高,但之后能获得巨大回报。
易于访问
由于大型应用被拆分成了多个小型服务,所以开发人员能够更加轻松地理解、更新和增强这些服务,从而缩短开发周期(尤其是在搭配使用敏捷的开发方法时)。
更加开放
由于使用了多语言 API,所以开发人员可以根据需要实现的功能,*选用最适合的语言和技术。
所面临的挑战
如果您的企业正在考虑迁移到微服务架构,那么不仅是应用要变,相关人员的工作方式也会随之而变。在某种意义上,改变企业和文化并不容易,因为每个团队都有自己的部署节奏和所负责的服务,而且这些服务都拥有自己的客户群。这些可能并不是开发人员通常要担心的问题,但是这些问题却决定了微服务架构能否取得成功。
除了文化和流程之外,复杂性和效率问题是基于微服务的架构所面临的另外两大挑战。以下八类挑战:
- 构建:您必须花时间明确各个服务间的依赖关系。要知道,由于存在这些依赖关系,当您完成一个构建时,可能会触发多个其他构建。您还需要考虑微服务对于数据的影响。
- 测试:集成测试和端到端测试可能会前所未有的难以实施,但却更加重要。根据您在架构相互支撑的服务时所采用的不同方式,架构中的一个部分出现故障,很可能会导致其他部分也随之出现故障。
- 版本管理:在更新到新版本时,请记住:向后兼容性可能会因更新操作而失效。要解决这一问题,您可以利用条件逻辑来进行构建,但是构建会变得繁复、难以控制且快速。或者,您也可以为不同的客户端维护多个活跃版本,但是相关的维护和管理工作会变得更加庞杂。
- 部署:没错,这也是一大挑战,至少是首次设置时所要面临的一大挑战。为了简化部署,您必须先大量投资自动化,因为人工部署无法应对微服务的复杂性。请好好思考您要以何种方式以及怎样的顺序来部署各项服务。
- 日志记录:使用分布式系统时,您需要利用集中式日志将所有相关信息集中到一处。否则,积累的日志数量将让您难以招架。
- 监控:您必须通过一个集中式视图来了解整个系统的情况,以便找出问题的根源。
- 调试:无法进行远程调试,因为这种方式无法涵盖数十个或数百个服务。不幸的是,关于应该如何进行调试,目前还没有标准答案。
- 连接:请考虑使用服务探索功能,无论是集中式的还是集成式。
相关推荐
- 软件架构中的微服务有哪些特点?
- 架构师成长之路之限流漫谈 1. 我们为什么需要限流 2. 我们常见的限流手段 3. 微服务限流几个考虑的点 4. 总结
- saltstack salt介绍 salt强大吗 saltstack的运行方式 salt部署基本架构 服务器环境准备 salt-key salt-key的使用 日常命令参数 第一条salt命令 salt命令组成结构 目标定位字符串 state模块定义主机状态 Salt采集静态信息之Grains 数据管理中心之Pillar组件 Pillar与Grains对比 Python API调用SaltStack
- “一学就会,一做就废”微服务的架构模式:一个服务一个数据库模式 1. 微服务最基本的模式 2. 传统系统的问题 3. 单体系统太大了 4. 业务需求的个性化 5. SOA 的问题 6. 为什么需要服务 7. 为什么需要拆库 8. 最后留个尾巴
- 一文告诉你微服务到底是什么,微服务按需伸缩,分布式复杂,接口相互依赖,springCloud,Dubbo,, 二、微服务实践先知 5. 微服务需要考虑的问题 微服务初探 第一代微服务框架 下一代微服务:Service Mesh? 微服务框架 搭建典型微服务架构 三、微服务技术选型和微服务的问题 四、微服务架构设计 五、微服务架构设计落地 六、微服务架构设计过程中积累的心得 七、总结
- Web服务,基于Java的SOA架构平台的简略介绍(二)
- Web服务,基于Java的SOA架构平台的简略介绍(一)
- 面向服务的体系架构(SOA) 面向服务的体系架构(SOA) 1、面向服务的体系架构(SOA) 2、架构的演变过程 3、RPC简单介绍 4、分布系统的基础设施 5、消息系统 6、其它基础设施 7、系统架构演化历程 7.6、系统架构演化历程-分布式服务 8、分布式服务应用会面临哪些问题? 9、分布式架构下系统间交互的5种通信模式
- 开发高性能的j2ee应用服务器,可能只有舍弃掉现有servlet架构
- java面试题整合(持续更新) Redis是如何实现list存储的 SpringMVC的优势、基本原理以及大概的流程 JSP和servlet 的区别 Java中是 怎么解析xml的 MySQL数据库的索引有哪几种?有什么区别? class.forName是什么意思 几种造线程池的方法,区别 ? 面向服务通过什么样的方式实现? 消息中间件 acitveMQ 的作用、原理?几种模式,每种的特点及使用问题?MQ 发送消息失败怎么办? Tomcat 集群中怎么实现共享 在数据库怎么复制表数据和表结构? From表单提交的方法、属性,数据量大的时候用什么方法提交? 服务器宕机如何处理?全部宕机如何处理? java多线程有几种实现方法?都是什么?它们的区别? JDO是 什么?说说你 对JDO的 理解 如何在Jsp中把div或table隐藏起来? TCP和UDP的区别? Servelet在多个请求时存在线程安全问题,请讲一下在servelet编程中要注意什么问题? Quartz怎么配置啊? 服务器集群和ses
- 【转】通过Excel生成批量SQL语句,处理大量数据
- Robot framework selenium driver download