这5个错误在设计微服务架构的时候你一定要避开

来源: 云巴巴 2020-04-13 17:27:40

  到目前为止,大多数企业开发工作人员已听说了微服务的种种好处,不过,真正通过将现有技术应用程序转换成微服务体系架构以“迁移整体式系统”时,你可能会发现设计一个有效的微服务架构困难重重。开发社区没有花大量的时间来讨论如何设计,而是讨论为什么采用微服务架构。

  本文主要介绍了设计成功的微服务架构的几个优秀社会实践,我们不会介绍开发或部署微服务,而是通过讨论计划使用微服务系统架构时应避免的常见错误。

这5个错误在设计微服务架构的时候你一定要避开

1. 痴迷于每项功能有一个服务
  有效对于大多数开发人员描述的微服务架构,他们会告诉你的应用程序功能的各个方面应该由不同的微服务支持。例如支付应用程序,认证应该是一个微处理服务,支付是另一个微服务进行处理,前端又是一个微服务运行,另一个存储和检索数据,等等。
  主要的应用程序设计为分配给不同的微服务功能通常是一个好主意。但是这个基本原则很容易过犹不及,往往会阻碍设计进行有效的微服务系统架构。
  有时,区别一项功能与另一项功能的界线很模糊, 例如,您是否应该将用户注册视为与用户身份验证不同的功能,因此为每个功能创建单独的微服务?如果存储在多个位置的应用程序数据,每个位置都应该有自己的微服务?还是应该只有一个数据服务来处理所有的位置?
  这些问题的答案是,这可能无关紧要。 找出一个应用程序将有多少微服务,以及它将处理哪些功能。 如果你花了太多的时间来找出如何在应用程序中分割不同的任务,那么它的工作效率就不会很有效。
2. 微服务做得过小
  同样,设计微服务系统架构使每个微服务过小。因此我们需要企业众多微服务来组成整个应用程序是常见的错误。
  开发工作人员之所以遇到这个陷阱,是由于没有他们可以认为微服务越小越好,从某种意义上可以说是对的——将大型企业应用系统程序分成较小的离散单元是为应用程序不断提高可扩展性和可靠性的一种方法。
  但是,如果微服务变得太小,开发和部署微服务的成本将在以后显著增加。每个服务都需要有自己的开发和部署管道(更不用说单独监控,个人日志和安全操作了)。
  因此,虽然你确实我们希望微服务小点,但不应该选择过小,也不应该让应用系统程序含有太多的微服务。 一般情况下,如果您的应用程序由十几个微服务组成,每个微服务可能太小,则应该合并微服务,以不同的方式设计体系结构。
3. 需要特定的部署解决方案
  如今的常见做法是通过容器来部署微服务——通常借助OpenShift或另一种基于Kubernetes的编排平台。
  但几年后还会是这样吗? 我不知道。 部署技术在不断地更新,很难知道哪种部署解决方案对您的微服务应用程序来说是最合理的。
  因此,设计微服务架构的方式需要特定类型的部署技术是错误的。你不应该让自己依赖Kubernetes、甚至普通的容器才能部署应用程序,而是应设计一种可以在各种基础架构上、甚至可以在各种操作系统上运行的架构。
4. 要求同时更新所有微服务
  有时候你看到微服务架构的错误要求:如果一个微服务更新应用,同时也要更新(或至少是重新启动)其他微服务。
  如果从整体式系统的角度来看,这种想法很自然,但在微服务方面,这种做法意味着你是在自找麻烦。微服务的目的一方面是在不影响其他部分的情况下,更新、扩展或重新启动应用程序的某些重要部分。
  因此,如果改变微服务的状态也意味着改变其他微服务的状态,那么您将失去微服务带来的灵活性。也更难以持续交付,因为万一推动服务升级,你无法做到不影响其他服务。
  另一方面,你的微服务不应太紧密地耦合在一起。 在设计结构时尽量避免这种情况:如果您依赖的另一个服务没有运行,则服务无法运行。
5. 忽视日志
  设计微服务系统架构时要避免的最后一个陷阱是忽视日志。
  这个错误很容易被忽视, 当你为每个微服务编写代码时,你以为在以后搞清楚日志,或者你能够到一个微服务环境部署日志代理,它将能够收集你需要的所有数据。
  最好从一开始就将日志合并到微服务架构中。在许多情况下,这意味着微服务来自其它微服务收集日志数据创建的。然而,在其他情况下,每个服务可以开展自己的微测井,数据重定向到一个中心位置。
  无论哪种战略目标应该是确保微服务架构有利于从整个应用程序的日志数据的收集,并把它的中心位置分析和存储。

结论

  设计微服务时没有一个一成不变的规定。 然而,作为一般的指导方针,上述原则将帮助您规划一个微服务体系结构:提供微服务应该具有的所有好处,而不会遇到设计不当的微服务体系结构给开发人员和IT团队带来的麻烦。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

评论列表

为你推荐

划重点!关于DevOps大型机上使用的问题

划重点!关于DevOps大型机上使用的问题

我们来重点讲述关于DevOps大型机上使用的问题,将通过“DevOps加快交付速度”、“DevOps运行时软件优化”和“DevOps提高大型机管理员工作效率”这三部分进行具体分析。

2020-04-15 16:28:13

为什么云计算和DevOps互相需要彼此

为什么云计算和DevOps互相需要彼此

随着云计算的兴起,每个企业都已经成为服务业务企业。购买者并不善于通过寻找超级商品。 他们可能会寻找一流的研究来匹配他们对这些产品的使用。iPhone和Android手机将客户服务作为其产品包的一部分,笔记本电脑和手机,技术包括GPS,账单支付,配送,采购。

2020-04-15 18:00:41

关于DevOps促进战略,你不得不知道的事

关于DevOps促进战略,你不得不知道的事

今天我们谈谈DevOps促进战略——     领导层需要具有勇气以及奉献精神——如果想要为DevOps和应用的灵活性和重塑团队的话。当然,它也会使我们花费大量时间和金钱,并且在一个团队组织成员筛选上需要做出一个艰难的决定。

2020-04-15 16:04:09

关于DevOps的五大重点与三种便捷的内容

关于DevOps的五大重点与三种便捷的内容

古人有云:“射人先射马,擒贼先擒王”。哲学矛盾原理也告诉我们,应该用“抓关键,看主流”的方法处理问题。简而言之,在处理一个问题的时候要抓主要矛盾、抓矛盾的主要方面。在对DevOps的学习上也是如此,只有抓住重点,找到便捷的道路,才有可持续发展的可能。

2020-04-15 16:19:47

你用过这些吗?关于DevOps的5大工具

你用过这些吗?关于DevOps的5大工具

传闻在“DevOps界”,有5大DevOps工具贼好用,小伙伴们快来看看这些你都用过吗?     DevOps的在软件开发行业日益流行的概念。越来越多的团队希望可以通过实现中国企业文化产品的敏捷开发,DevOps 使一切社会发展已经成为可能。

2020-04-15 16:45:28

你所不知道的——微服务和DevOps实践经验

你所不知道的——微服务和DevOps实践经验

从结绳记事到计算云,计算工具从简单进化到复杂,这都是改善生产和生活的表现。软件的未来看似光明,但却把人们拖进了充满泥泞的现实。

2020-04-13 17:59:28

严选云产品

纷享销客制造业CRM客户管理系统 基于以上企业能力提升关键业务场景,纷享销客连接型 CRM 帮助企业建立以客户为中心的全价值链的数字化平台,向“以客户需求驱动创新生产”的智能制造业转变:建立制造商与客户之间的“桥梁”,帮助企业收集客户需求,实现对市场的快速反应、做到真正以市场为导向的产品革新。
翼鸥教育ClassIn企业培训数字化平台 翼鸥教育ClassIn企业培训数字化平台,收集培训师教学行为数据,引领培训师专业成长,课程迭代。多端登陆,满足学员泛在化与碎片化的学习需求。教学过程多维度加密,通过跑马灯等防护内容外泄。数字化管理测训全过程,数据自动采集分析。
阿里云全球加速GA 阿里云全球加速GA是一款覆盖全球的互联网加速服务。依托阿里云优质的全球互联网带宽与传输网络,实现全球网络就近接入,可以减少延迟、抖动、丢包等网络问题对服务质量的影响,为全球用户提供高可用和高性能的网络加速服务。
的修集成商运维管理系统 “的修”平台,全面聚焦集成商运维管理痛点,提供项目加分、运维管理、团队考核等一站式解决方案。通过便捷报修、巡检管理、配件管理、意见反馈、定点打卡、智识库、多维度数据分析等功能,打造移动、便捷、高效的数字化工作方式,实现降本增效。
VeCloud微云网络跨境电商网络解决方案 VeCloud微云网络跨境电商网络解决方案,解决电商企业访问国内、国际网络慢,不能有效管理店铺等问题,实现快速、精准、高效的访问全球电商网络资源。
腾讯云红蓝对抗服务 腾讯云红蓝对抗服务,通过设立深层次的演练,检验公司已建的安全防护措施是否有效,发现公司关键信息基础设施存在的突出问题和深层次漏洞隐患。检验公司对网络安全攻击事件的监测发现能力、预警能力,通过真实攻击与防护演练,积累实战经验,增强安全设施与人才队伍建设。

推荐视频

甄选10000+数字化产品 为您免费使用

申请试用