采用微服务时必须解决的四个挑战 -凯发k8国际

2顶
0踩

引用
原文:
作者: saba anees,appdynamics公司的内容运营专员
翻译: 孙薇

在过去几周,我们介绍了微服务的概念,以及,还有——迁移到微服务的工作对企业提出了很大的挑战。在本周的文章中,我们将会对迁移到微服务时可能遇到的障碍,以及付出的努力最终所带来的好处进行深入探究。

微服务架构
微服务架构比原有系统要复杂得多,由于团队必须要管理与支持许多移动的部件,整体环境愈加复杂。其中一些必须要考虑的问题包括:
  • 在添加更多的微服务时,必须确保这些微服务能够一起扩展。颗粒度更细致,代表着可移动的部件更多,从而导致系统更加复杂。
  • 参与交互的服务越多,可能的故障点就越多。聪明的开发者总会未雨绸缪,为解决故障制定好计划。
  • 将功能从单一整体化架构向微服务架构迁移时,会有很多持续通讯的小型组件产生,追踪单个业务事务在不同层面中的性能问题可能非常困难,因此,我们可以通过调用各种相关方法,包括自定义header、token或id来解决。
  • 由于微服务是无状态的、分布式的、独立的,因此传统的日志记录方式不再实用——就算想要简单地定位某个问题,都有可能制造出过多日志。微服务的日志必须能与跨平台的事件相关联。

其他要考虑的事情包括:

1.运营与基础架构: 开发团队必须与运营团队更加紧密地合作,否则由于多个运营同时进行,情况会失去控制。

2.支持: 对微服务安装提供支持和维护,比之前为单一整体式应用提供支持维护要困难得多。微服务的每个部件都可能涉及了多种框架及语言,在提供支持时,近乎无限的复杂度会影响相关人员添加服务的决策。如果某个团队成员希望创建一个使用深奥语言的新服务,很可能会影响到整个团队,因为大家必须确保这个新服务能够与现有的部分协作。

3.监控: 在添加新服务时,维护与配置监控的能力也会是一个挑战,必须依赖自动化来确保监控跟得上服务规模的变化速度。

4.应用安全: 架构中服务的发展为黑客、解密高手与犯罪分子制造了更多侵犯的目标。要跟踪各种运营系统、框架与语言会导致负责安全的团队将全部精力放在确保系统不易受到攻击方面上。

5.请求: 在服务间发送数据的方式之一就是使用request header,它可以包含类似身份验证这样的细节,从而减少了所需的请求数量。但当这类数据发送大批量进行时,就会增加对各个团队合作的需求。

6.缓存: 缓存有助于减少所需的请求数量,涉及多个服务的请求在缓存后会迅速变得复杂起来,需要不同服务及其开发团队进行沟通。

7.容错性: 微服务的口号就是“互相依赖”。各项服务必须能经受得住直接的失败与无法解释的超时问题。故障可能会产生多米诺效应,通过某些服务产生级联效应,并可能会让某些服务失效。在这种环境下,容错也比在单一整体式系统中要复杂得多。

关注devops
在旧式开发环境中,,随着运营、开发与质量保证(qa)团队合作形式的发展,以及贯通整个软件开发流程的沟通加强,最终出现了devops。devops并不是由某个人或单个小组所担任的角色,它实际上是将有助于运营与开发密切合作的架构进行了概念抽象。在微服务架构中,开发者负责创建系统,以成功交付最终的产品。

随着大型及小型公司逐渐向微服务平台迁移,开发者也必须随之发展。由于部署微服务非常简单,开发者会逐渐参与到代码部署与产品监控的工作中。这种方式与传统案例产生了对比:在过去开发者负责编写代码,将其交付给另一支团队(devops)来执行部署与维护;而现在开发者与devops逐渐融合成更小的应用团队,主要负责三项工作:应用的构建、部署与监控。

微服务正在改变团队的组成方式,让公司得以围绕着特定的服务来创建团队,并赋予它们自治权以及一定范围内的责任。这种方式可以让公司根据瞬息万变的业务需求而快速作出调整,且不会影响到核心业务,同时也方便新人快速融入团队。

开发者可能要应对的包括:
  • 了解如何组合微服务架构的javascript开发者短缺;
  • 理解及实现物联网服务;
  • 协助公司将科技引入商业计划与策略上;
  • 让业务经理了解:怎样应用开放api来加强现有产品线,并在市场上开拓新的机遇;
  • 如何简化开发堆栈,选择正确的技术,并在供应商提供的中间件没有价值时提出拒绝;
  • 从netflix等行业领导者那里学习经验,并决定实现哪些微服务对公司最有好处;
  • 了解这一点:很多供应商尚未建立起稳定的微服务平台;
  • 同一时间内管理及运营的个体微服务或达数百,要能应对这种压力;
  • 管理日益增长的复杂团队网——由尚未完全了解微服务方法的运营者、架构师、开发者、qa团队以及整合者所组成。

开始转变
一旦转变过程开启,你就会发现之前预想不到的新挑战出现,包括:
  • 转移到微服务上的工作负载应该有多少?
  • 是否该允许代码迁移到不同服务上?
  • 在运营持续时,如何确定每个微服务的边界?
  • 如何监控微服务的性能?

想要了解更多信息,请阅读英文电子书全文《如何使用微服务构建与拓展》。
2
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 微服务解决的问题 服务治理:为了有效管理分布式系统中存在的大量服务实例,微服务架构引入了服务发现和服务注册机制,使得服务实例的管理变得自动化、透明化。 eureka、nacos等 api 网关:为了降低服务...

  • 上篇文章:分布式系统漫谈【陆】_soa和微服务 本文继续说说微服务面临的一些挑战和凯发k8国际娱乐官网入口的解决方案。...因此在微服务架构设计时,我们就要把这部分问题考虑进去,下面说说我们应该采取哪些措施和方案去解决。 舱壁模...

  • 微服务系列解析文第一篇

  • 四、独立lb进程服务发现 针对进程内lb模式不足的情况的一种折中方案 与上个方案的不同之处,将lb和服务发现功能从进程内拆出来,变成主机上的一个独立进程,主机上的一个或是多个服务要访问目标服务的时候,他们都...

  • 从单体应用迁移到微服务也绝不是一项简单任务,未经过测验,便采用微服务构建一个新产品则更加复杂。只有在充分评估了替代方案之后,才应该认真考虑是否使用微服务架构。

  •  在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释...

  • 微服务的调用两个方式已经不算什么新的概念,一个是rpc一个是事件驱动也就是通过发送消息的机制,消息方式是松耦合方式,比紧耦合的rpc方式要优越,但rpc方式如果用在适合的场景也有它的一席之地

  • 微服务架构的新挑战 在著名软件著作《人月神话》中提到,软件世界没有“银弹”,这句...但是打散为分布式系统后,变为进程间通信,往往这个过程还伴随着跨设备的网络访问,架构师在设计时必须考虑上下游系统因为网络..

  • 微服务网关凯发k8国际娱乐官网入口的解决方案和使用总结 一.什么是网关 1.1 什么是网关 api gateway(apigw / api 网关),顾名思义,是出现在系统边界上的一个面向api的、串行集中式的强管控服务,这里的边界是企业it系统的边界,可以...

  • 在生产环境中采用与部署微服务应用的决策上,很显然安全性占据了非常重要的角色。根据451 research的研究报告《2016...下面这四条正是确保微服务应用安全的最佳实践范例。第一条:发现并监控服务间的通讯通常来说,...

  • 微服务基础

  • 我们收获这些好处的同时,也一定会带来某些弊端与挑战,这些挑战可以从四个方面来说: 1)分布式带来的通信复杂性与不确定性 对于单体应用,要完一个业务操作,我们通过本地方法调用,这些调用都在同一个进程内完成...

  • 在4月20日的阿里云栖开发者沙龙php技术专场上,云智慧technical vp高驰涛为大家介绍了微服务的前世今生,分享了微服务架构实践中所面对的诸多挑战以及相应的应对策略。 本次直播视频精彩回顾,戳这里! 直播回顾:...

  • 以上微服务内容主要参考《microservices patterns: with examples in java》和《building microservices: designing fine-grained systems》两本书内容,通过chatgpt对书中内容进行归纳总结提炼出来的。效率提升明显...

  • 四、微服务的具体特征 五、soa和微服务的区别 六、如何具体实践微服务 七、常见的微服务设计模式和应用 八、微服务的优点和缺点 九、思考:意识的转变 十、参考资料和推荐阅读   一、微服务架构介绍  ...

  • 云原生之微服务的介绍

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • gb2312字符集 作用:国家简体中文字符集,兼容ascii。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从a1到f7, 低字节从a1到fe。将高字节和低字节分别加上0xa0即可得到编码。 gbk字符集 作用:它是gb2312的扩展,加入对繁体字的支持,兼容gb2312。 位数:使用2个字节表示,可表示21886个字符。 范围:高字节从81到fe,低字节从40到fe。 gb18030字符集 作用:它解决了中文、日文、朝鲜语等的编码,兼容gbk。 位数:它采用变字节表示(1 ascii,2,4字节)。可表示27484个文字。 范围:1字节从00到7f; 2字节高字节从81到fe,低字节从40到7e和80到fe;4字节第一三字节从81到fe,第二四字节从30到39。

  • 毕业设计,安卓app,基于java开发的学生成绩课件管理系统app,包括pc端和安卓anroid手机app,内含java完整源码 安卓andriod学生成绩课件管理系统 系统开发环境: windows myclipse(服务器端) eclipse(手机客户端) mysql数据库 服务器也可以用eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,mvc设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用ssh框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 班级: 班级编号,班级名称,开办日期,班主任 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,家庭地址 老师: 教师编号,登录密码,姓名,性别,出生日期,联系电话,邮件,地址,

global site tag (gtag.js) - google analytics
网站地图