逐风者的博客 - 微服务
type: channel
link: https://blog.lehman.top/tag/%E5%BE%AE%E6%9C%8D%E5%8A%A1/
items: 微服务架构-SpringCloud

微服务架构-SpringCloud
type: item
date: 2021-09-21T17:56:00+08:00
description: 微服务架构[collapse status="false" title="微服务的由来"]由Martin Fowler和James Lewis在2014年共同提出微服务架构风格是一种使用一小套小服务开发单个应用的方式，每个服务运行在自己的进程中，并且使用轻量机制通信（HTTP API）,这些服务基于业务能力构建，并通过自动化部署机制独立部署（可以使用不用的编程语言，以及不同的数据存储机制来实现）[/collapse][collapse status="false" title="微服务是什么"]微服务的核心就是将传统的一站式应用，跟还有业余拆成一个个服务，彻底的去耦合，每一个微服务提供单个业务的功能服务（一个服务只做一件事，把事情交给专业的机制去做）从技术的角度来看微服务就是一种小而独立的处理过程，类似于进程概念，能够自己单独启动或者销毁，拥有自己独立的数据库微服务是一种架构风格，一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署，各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下，每个任务代表着一个小的业务能力尽管“微服务”这种架构风格没有精确的定义，但其具有一些共同的特性，如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等微服务架构的思想是从与整体应用对比而产生的[/collapse][collapse status="false" title="微服务架构的优缺点"][scode type="green"]优点[/scode]每个服务足够内聚，足够小，代码容器容易理解，这样能聚焦一个指定的业务功能和业务需求开发简单，开发效率高，一个服务可能就只是专一只做一件事微服务能被小团队单独开发微服务是松耦合的，是具有功能意义的服务，无论在开发阶段和部署阶段都是独立的技术异构 - 微服务可以使用不同的语言开发。在一个大型系统中，不同的功能具有不同的特点，并且不同的团队可能具备不同的技术能力。因为微服务间松耦合，不同的微服务可以选择不同的技术栈进行开发，同时，在应用新技术时，可以仅针对一个微服务进行快速改造，而不会影响系统中的其它微服务，有利于系统的演进微服务之间可以使用轻量机制（HTTP）来通信易于和第三方集成，微服务允许集成灵活的自动部署，通过持续的集成工具(jenkis,Bamboo....)微服务运行使用融合新技术微服务只是业务逻辑代码，不会和HTML、CSS或其他界面组件混合每个服务之间都有独立的存储方式和功能，可以有自己的数据库，也可以统一数据库可扩展 - 应对系统业务增长的方法通常采用横向（Scale out）或纵向（Scale up）的方向进行扩展。分布式系统中通常要采用Scale out的方式进行扩展。因为不同的功能会面对不同的负荷变化，因此采用微服务的系统相对单块系统具备更好的可扩展性灵活组合 - 在微服务架构中，可以通过组合已有的微服务以达到功能重用的目的（比如在示例中，如果我们要新增一个Booking Service，在预订时可以直接重用Account Service和Inventory Service检查用户权限和库存情况。）......[scode type="red"]缺点[/scode]开发人员要处理分布式系统的复杂性,微服务间通过REST、RPC等形式交互，相对于Monolithic模式下的API形式，需要考虑被调用方故障、过载、消息丢失等各种异常情况，代码逻辑更加复杂多服务运维难度，随着服务增加，运维压力也在增大。在采用微服务架构时，系统由多个独立运行的微服务构成，需要一个设计良好的监控系统对各个微服务的运行状态进行监控。运维人员需要对系统有细致的了解才对够更好的运维系统系统部署的依赖服务之间的通信成本,相对于Monolithic架构，微服务的间通过REST、RPC等形式进行交互，通信的时延会受到较大的影响数据的一致性(对于微服务间的事务性操作，因为不同的微服务采用了不同的数据库，将无法利用数据库本身的事务机制保证一致性，需要引入二阶段提交等技术)系统集成测试性能监控......[/collapse][collapse status="false" title="微服务技术栈"]微服务技术栈=多种技术的集合常见的分布式微服务架构有服务治理服务注册服务调用服务负载均衡服务监控.....[/collapse]SrpingCloud[collapse status="false" title="SrpingCloud概念"]Srping Cloud是一个微服务框架，相比Dubbo（阿里云）的RPC框架，Srping Cloud提供了一全套的分布式系统解决方案Srping Cloud为微服务框架开发涉及到的配置管理、…