为什么我选择了 SPRING CLOUD 分布式 微服务

常见的架构单体架构
单体架构在小微企业比较常见,一个应用、一个数据库、一个web容器就可以跑起来。在两种情况下可能会选择单体架构:一、在企业发展的初期,为了保证快速上线,采用此种方案较为简单灵活;二、传统企业中垂直度较高,访问压力较小的业务。在这种模式下对技术要求较低,方便各层次开发人员接手,也能满足客户需求。?单体架构的架构图:


在单体架构中,技术选型非常灵活,优先满足快速上线的要求,也便于快速跟进市场。?垂直架构
在单体架构发展一段时间后,公司的业务模式得到了认可,交易量也慢慢的大起来。这时候为了应对更大的访问流量,就会对原有的业务进行拆分,比如说:后台系统、前端系统、鉴权系统和业务系统等。在这一阶段往往会将系统分为不同的层级,每个层级有对应的职责。UI层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和上层进行数据交换和存储。比如我们开发的资产盘活和资产验收就是垂直架构的系统。
垂直架构的架构图:

在这个阶段SSM(SpringMVC、Spring、MyBatis)是项目的关键技术,SpringMVC负责逻辑控制、Spring负责业务层管理Bean、MyBatis负责数据库操作进行封装,持久化数据。?
服务化架构SOA
如果公司进一步的做大,垂直子系统会变的越来越多,系统和系统之间的调用关系呈指数上升。在这样的背景下很多公司都会考虑服务SOA化。SOA代表面向服务的架构,将应用程序根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。优点是可以根据需求通过网络对应用组件进行分布式部署、组合和使用。服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。?
服务化架构图:

SOA的隐性缺陷 当集中式应用转变成分布式系统后,系统之间的相互可靠调用一直以来都是分布式架构的难题。网络通信,序列化协议设计等很多技术细节需要确定。一个高性能的框架,能够构建高可用的分布式系统,系统地考虑各个应用之间的分布式服务发现、服务路由、服务调用以及服务安全等细节。

对比SOA和微服务架构服务化架构已经可以解决大部分企业的需求了,为什么要研究微服务?微服务架构强调:业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外提供服务。不再强调传统SOA架构里面比较重的ESB企业服务总线。强调每个微服务都有自己独立的运行空间,包括数据库资源。源于互联网的思路,服务强调了采用HTTP Rest API的方式来进行切分粒度会更小微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。微服务架构关键词

有新的应用上线应该怎么办?
应用是运维管理的基本单位

完整的应用生命周期管理机制应该包括:

1、应用创建 2、部署 3、启动 4、回滚 5、扩容缩容 6、停止下线等。

我们需要服务注册和发现服务中心将所有的可以提供的服务都注册到它这里来管理,其它各调用者需要的时候去注册中心获取,然后再进行调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。随着系统的流量不断增加,需要根据情况来扩展某个服务,只需要增加相应的服务端实例既可。在系统的运行期间服务中心有一个心跳检测机制,如果某实例在规定的时间内没有进行通讯则会自动被剔除掉,避免了某个实例挂掉影响服务。从而实现了注册、负载均衡、故障转移的功能。

多应用如何相互访问才能保证安全?
一个好的服务框架要保证用户每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都需要进行严格的服务鉴权。

我们需要服务网关?网关提供了动态路由,监控,弹性,安全等的边缘服务。它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。作为资源的统一访问入口,同时也可以做权限校验等类似的功能。 不同的服务一般有不同的网络地址,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求。以资产盘活数据统计为例,可能会调用以下几个服务:用户微服务? 资产分类微服务? 订单微服务等如果客户端直接和微服务进行通信,会存在以下问题:客户端会多次请求不同服务,增加复杂性。存在跨域请求,处理复杂。每一个服务都需要独立认证认。代码难以重构。上述问题,都可以借助网关解决。微服务网管是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。

应用如何高效管控,服务又如何治理?
服务降级

流量管控

我们需要熔断器服务雪崩效应:一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。熔断器在某个服务连续调用N次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务。间隔一段时间后再次检查此服务,如果服务恢复将继续提供服务。 不适用场景
核心无降级业务:拍照验收时验收照片是业务核心,这时如果拍照服务无法使用整个资产验收服务就应该终止。适用场景边缘业务或者可降级的业务:同样是拍照,在资产盘活中上架物品对照片的需求没有非常强烈,这时如果拍照服务出现问题,不应该影响资产上架,就可以利用熔断器来保证上架流程正常进行。

运维如何高效定位问题? 随着服越来越多,对调用链的分析会越来越复杂。服务之间的调用关系、某个请求对应的调用链、调用之间消费的时间等,对这些信息进行监控就成为一个问题。在实际的使用中我们需要监控服务和服务之间通讯的各项指标,这些数据将是我们改进系统架构的主要依据。因此分布式的业务流程跟踪就变的非常重要。我们需要链路跟踪
通过链路追踪可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长时间。从而让我们可以很方便的理清各微服务间的调用关系。


微服务的技术栈

Eureka进行服务注册发现,连接微服务Hystrix监控服务调用进行熔断保护Config提供了统一的配置中心服务所有对外的请求和服务都通过Zuul来进行转发,起到API网关的作用使用Sleuth、Zipkin将所有的请求数据记录下来,进行后续分析这些功能都是以插拔的形式提供出来,方便我们系统架构演进的过程中,可以合理的选择需要的组件进行集成,从而在架构衍进的过程中会更加平滑顺利。


我们可以获得什么?

硬件部署架构

原文地址:https://blog.51cto.com/13981400/2396975

时间: 2024-11-06 07:29:09

为什么我选择了 SPRING CLOUD 分布式 微服务的相关文章

Spring Cloud Alibaba | 微服务分布式事务之Seata

Spring Cloud Alibaba | 微服务分布式事务之Seata 本篇实战所使用Spring有关版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Greenwich.SR2 Spring CLoud Alibaba:2.1.0.RELEASE 1. 概述 在构建微服务的过程中,不管是使用什么框架.组件来构建,都绕不开一个问题,跨服务的业务操作如何保持数据一致性. 2. 什么是分布式事务? 首先,设想一个传统的单体应用,无论多少内部调用,最后终归是在同一

基于Spring Cloud的微服务落地

请点击此处输入图片描述 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud.它包括: Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以实现应用配置的外部化存储,支持客户端配置信息刷新.加密/解密配置内容等. Spring Clo

[转帖]微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务

微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务 http://skaka.me/blog/2016/08/03/springcloud2/ AUG 3RD, 2016 10:09 PM | COMMENTS 之前介绍过微服务的概念与Finagle框架, 这个系列介绍Spring Cloud. Spring Cloud还是一个相对较新的框架, 今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比我之前用过的Du

Spring Cloud构建微服务架构(一)——服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud CloudFoundry.Spr

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka 什么是服务治理 服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现. 为什么需要服务治理模块 在最初构建微服务系统的时候可能服务并不多,我们可以通过做一些静态配置来完成服务调用 此时看着一切都还正常. 随着项目逐渐接近尾声,维护人员需要维护的服务越来越多,越来越复杂,最终形成大量的配置文件,维护将会变得越来越困难.此时,微服务应用实例自动化管理框架变得

Spring Cloud构建微服务架构(一)服务注册与发现

原文来源:http://blog.didispace.com/springcloud1/ Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Sprin

基于Spring Cloud的微服务构建学习-2 Spring Boot

基于Spring Cloud的微服务构建学习-2 Spring Boot 为什么使用Spring Boot而不是Spring Spring Boot具有自动化配置,快速开发,轻松部署优点,非常适合用作微服务架构中各项具体微服务的开发框架.它不仅可以帮助我们快速的构建微服务,还可以轻松简单的整合Spring Cloud实现系统服务化,而如果使用了传统的Spring构建方式的话,在整合过程中我们还需要做更多的依赖管理工作才能让它们完好的运行起来. Spring Boot的宗旨并非是重写Spring或

利用Spring Cloud实现微服务- 熔断机制

1. 熔断机制介绍 在介绍熔断机制之前,我们需要了解微服务的雪崩效应.在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进.但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成.这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出".如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的&

Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud0 CloudFoundry.S