当前位置: 首页 > 网络应用技术

微服务体系结构

时间:2023-03-07 12:21:26 网络应用技术

  微服务是一种服务组织的形式。很难有一个特别明确的定义,并且技术开发人员概述了更多的共识。从总体上讲,微服务架构包含一组部署的小型服务,以共同完成应用程序。

  接下来,我们可以通过微服务遇到的历史,特征和问题来了解有关微服务的更多信息。

  早在2005年,彼得·罗杰斯(Peter Rodgers)在Web Services Edge会议上的演讲中介绍了“ Micro-Web-Services”一词。他的拥护者:微服务应与UNIX系统的管道相似。该服务在运行时是多语言,他们可以互相打电话。复杂的业务逻辑应隐藏在服务内部,并仅将简单的API暴露于外界;任何粒度服务都可以在外部提供服务。

  2007年,尤瓦尔·洛威(JuvalL?wy)呼吁建立一个服务系统,以建立他的工作中的每个班级。

  2011年5月,在威尼斯附近举行的软件架构师研讨会使用Micorservice来描述参与者最近探索了这种常见的架构风格。2012年5月,该小组认为微服务是一个更合适的名称。

  2012年3月,詹姆斯·刘易斯(James Lewis)还提议将一些类似的想法作为Krakov会议上的研究主题。Netflix总监Adrian Cockcroft将这种方法描述为一种良好的SOA。

  我个人认为将微服务理解为最终的SOA架构是非常合理的。

  微服务具有以下特征:

  我认为微服务的实现可以通过两个步骤进行:

  服务拆分分为垂直拆分(业务拆分)和水平拆分(分层)。

  垂直拆分可以根据大型田地进行分割,然后根据该领域内的API进行拆分。例如,我们可以将公司分为用户,搜索,评论并推荐几个主要的业务领域。

  我们可以根据API的粒径来拆分特定的服务,例如:注册服务,登录服务,会员管理服务等。

  业务领域的垂直拆分通常需要根据业务领域的不同模块进行分配,并且很难拥有统一的标准。拆分的粒度必须与团队规模,基础架构,访问和其他维度相结合。

  水平分割实际上是在整个业务过程中分层的。取而代之的是,有一些一般的分层规则可供参考。对相对完整的微服务体系结构的示意图。

  上图的左侧表示静态资源服务,这相对简单。CDN使用CDN加速,后者是静态资源的存储地址。

  图的右侧表示动态资源的访问链接。它主要分为:网关层,业务逻辑层,数据逻辑层,存储层。在网关层中,LVS用于实现四层网络负载和NGINXS用于实现7层网络。业务网关用于实现身份验证,当前限制,生成会话和协议转换。BFF层用于实现业务模块的数据组件和SSR。单个或多个API。对于需要汇总的某些服务,我们可以制作一些服务包装,并通过服务之间的层次将通用逻辑收敛。数据访问层封装了数据的存储逻辑,以便业务模块不需要关心基础数据库。存储层实现了数据的最终存储。

  通过水平层,可以在一般函数维度上分配服务,以在每一层都关心其功能的情况下进行服务。

  通过服务拆分,单个服务的复杂性减少了,但与此同时,它也带来了很多问题:

  ETC。

  为了确保在微服务体系结构下整个系统的高可用性,需要一系列工具来解决上述问题。

  我总结了一个常见问题和解决方案的思维图:

  我解释了图中内容的一些内容:

  我们的每个服务都可能具有多个副本,或者可以分布在不同的计算机室中。当上游服务呼叫下游服务时,您需要知道每个副本的呼叫信息。在这个时代服务发现下游服务。

  内部网络通信通常在微服务之间使用。目前,RPC框架可用于完成服务之间的呼叫。在微服务的开发中间,当网络延迟可接受时,也可以直接通过HTTP直接调用它。

  大量小型服务可能有故障。为了比客户发现问题和停止损失,需要进行故障检测,故障治疗和失败恢复。

  微服务的天文台也非常重要。随着请求链接变长,在线问题很难检查。在网关层处的每个请求。通过日志跟踪系统,您可以轻松地跟踪问题的模块和上下文信息。

  服务之间的呼叫需要合理选择集群,解决并行序列顺序,并解决流量平衡问题。

  有必要拥有一个发布平台来快速促进服务,并可以支持诸如发布副本,资源分配和服务回滚量之类的功能。

  有多种测试解决方案可以在线完成各种测试要求。

  没有大型且全面的架构可以解决上述所有问题,但是根据某些开源组件可以包装或次要开发的许多开源组件。图片中的每个问题都涉及许多技术细节。一个人很难得到它。有一个团队需要开发+操作和维护以合作以完成任务。

  微型服务体系结构并不适合所有业务场景。它适合快速迭代发展和追求吞吐量。

  微服务体系结构的实施成本相对较高。当转换时,公司不需要从单个结构中建立到最终的完整微服务表格。更容易分为单个服务。在另一个示例中,数据访问层和业务逻辑层也可以在开始时放置在项目中。在项目中,我们可以通过DAO层分开数据和业务逻辑。

  最后,欢迎私人消息交流指出文章的缺点或提出疑问。

  https://microservices.io/

  https://en.wikipedia.org/wiki/microservices

  https://en.wikipedia.org/wiki/service-oriented_architecture

  https://docs.microsoft.com/en-s/azure/Architecture/guide/architectecture-styles/microservices

  https://aws.amazon.com/cn/mitroservices/

  https://e.naixuejiaoyu.com/detail/term_60641ec5c73b2_8tixmm/25

  原始:https://juejin.cn/post/71006048419866119