SpringCloudAlibaba 微服务讲解(一)微服务介绍
微服务介绍
1.1 系统架构的演变
随若互联网的发展,网站应用的规模也在不断的扩大,逬而导致系统架构也在不断的进行变化.从互联 网早起到现在,系统架构大体经历了下面几个过程:单体应用架构一蟻直应用架构--浴布式架构一 >SOA架构一〉微服务架构,当然还有悄然兴起的Service Mesh(服务网格化).接下来我们就来了解一下 每种系统架构是什么样子的,以及各有什么优缺点.
1.1.1 单体应用架构
互联网早期,一版的网站应用流量较小,只需要一个应用,将所有功能代码都部署在一起就可以,这样可以减少开阿发、部署、和维护的成本。
比如说一个电商系统,里面会包含狠毒哦用户管理、商品管理、订单管理、物流管理等等很多模块,我们会把他们做成一个web项目,然后部署到一台tomcat服务器上。
优点:
- 项目架构简单,小型项目的话,开发成本低
- 项目保护署在一个节点上、维护方便
缺点:
- 全部功能集成在一个工程中,对于大兴项目来讲不易开发和维护
- 项目模块之间紧密耦合,单店容错率低
- 无法针对不同模块进行针对性优化和水平扩展
1.1.2 垂直架构应用
随着访问最的逐渐増大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块都会 有比较大的访问量.
还是以上面的电商为例子,用户访问昆的增加可能影响的只是用户和订单模块,但是对消,息模块 的影响就比较小.那么此时我们希望只多増加几个订单模块,而不増加消息模块.此时单体应用就做不 到了,垂直应用就应运而生了.
所调的垂直应用架构,就是将原来的f 应用拆成互不相干的几个应用,以提升效率.比如我们可 以将上面电商的单体就拆分成:
- 电商系统(用户管理 商品管理订单管理)
- 后台系统(用户管理 订单管理 客户管理)
- CMS系统(广告管理 营销管理)
这样拆分完毕之后,一旦用户访问量变大,只需要増加电商系统的节点就可以了,而无需増加后台 和CMS的节点.
1.1.3 分布式系统架构
当垂直应用越来越多,重复的业务代码就会越来越多.这时候,我们就思考可不可以将重复的代码抽取 出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?这就产生了新 的分布式系统架构.它将把工程拆分成表现层和服务层两个部分,服务层中包含业务逻辑.表现层只需 要处理和页面的交互,业务逻辑都是调用服务层的服务来实现.
优点:
- 抽取公共的功能为服务层。提高代码的服用性
缺点:
- 系统间耦合度变高,调用搞关系错综复杂
1.1.4 SOA 架构
分布式架构下,当服务越来越多,容最的评估,小服务资源的浪费等问题逐渐显现,此时需増加f 调度中心对集群进行实时管理.此时,用于资源调度和治理中-CXSOA Service OrientedArchitecture, 面向服务的架构)是关键.
优点:
- 使用注册中心解决服务间的调用关系,一单某个缓解出错会应影响较大
- 服务关心复杂、运维、测试部署困难
1.1.5 微服务架构
微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的”彻底拆分“
优点:
- 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
- 微服务之间采用Restful等轻量级http协议相互调用
缺点:
- 分布式系统开发的技术成本高(容错、分布式事务等)
1.2 微服务架构介绍
微服务架构,简单的说就是将单体应用进一步拆分,拆分成更小的服务,没个服务都是一个可以独立运行的项目
1.2.1 微服务架构的常见问题
一旦采用微服务系统架构,就势必会遇到这样几个问题:
- 这么多小服务,如果管理它们
- 这么多小服务,它们之间如何通讯
- 这么多小服务,客户端怎么访问
- 这么多小服务,一旦出现问题,应该如何自处理
- 这么多小服务,一旦出现问题,应该如何拍错
对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的稍微服务产品都是针对一个问题,提供一个相应的组件来解决他们
1.2.2 微服务架构的常见概念
1.2.2.1 服务治理
*服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现
服务注册:服务实例将自身的服务信息注册到注册中心
服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求他们提供服务。
服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到
1.2.2.2 服务调用
在服务架构中,通常存在多个服务之间的远程调用的需求,目前主流的远程调用技术有基于HTTP的Restful接口以及基于TCP的RPC协议
- REST(Representational State Transfer):这基一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议
- RPC(Remote Promote Call):一种进程间的通讯方式,允许想调用本地服务一样调用远服务,RPC框架的主要目标使就是让远程调用更简单、透明。RPC框架负责屏蔽底层的传输方式,序列化方式和通信细节,开发人员在使用的时候只需要了解谁在什么位置提供什么样的远程服务接口即可,并不需要关心底层通信细节和调用个过程
区别与联系:
比较项 | RESTful | RPC |
---|---|---|
通讯协议 | HTTP | 一般用tcp |
性能 | 略低 | 较高 |
灵活度 | 高 | 较高 |
应用 | 微服务架构 | SOA架构 |
1.2.2.3 服务网关
随着微服务的不断増多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务 的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信可能出现:
- 客户端需要调用不同的url地址,増加难度
- 在一定的场景下,存在跨域请求的问题
- 每个微服务都需要进行单独的身份认证
针对这些问题,API网关顺勢而生.
API网关直面意思是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个 网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。有了网关之后,各个 API服务提供团队可以专注于自己的的业务逻辑处理,而API网关更专注于安全、流量、路由等问题.
1.2.2.4 服务容错
在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。我们没法预防雪崩效应的发生,只能尽可能去做好容错。服务容错的三个核心思想是:
- 不被外界环境影响
- 不被上游请求压垮
- 不被下游祥响应拖垮
1.2.2.5 链路追踪
随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要设计多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发,可能使用不同的编程语言来实现,有可能部署在几千台的服务器上,横跨多个不同的数据中心,因此,就需要对一次请求设计的多个来服务链路进行日志记录,性能监控技链路追踪
1.2.3 微服务架构的常见解决方案
1.2.3.1 ServiceComb
Apache ServiceComb,前身是华为云的微服务引擎CSE (Cloud Service Engine)云服务,是全球首个 Apache微服务顶级项目.它提供了一站式的微服务开源解决方案,致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理.
1.2.3.2 SpringCloud
SpringCloud 是一系列框架的集合,它利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署
SpringCloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经的起实际考验的服务框架组合起来,通过SpringBoot风格进行在封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
1.2.3.3 SpringCloud Alibaba
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的 必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务..
1.3 Spring Cloud Alibaba 介绍
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的 必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务.依托 Spring Cloud Alibaba,您只需要添加注解和少量配置,就可以将Spring Cloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统
1.3.1主要功能
服务限流降级:默认支持WebServlet、WebFlux、 OpenFeign、 RestTemplate、 Spring CloudGateway、 Zuul、Dubb。和RocketMQ限流降级功能的接入,可以在运行时通过控制台 实时修改限流降级规则,还支持查看限流降级Metrics监控。
服务注册与发现:适配Spring Cloud服务注册与发现标准,默认集成了 Ribbon的支持。
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
消息驱动能力:基于Spring Cloud Stream为微服务应用构建消,息驱动能力。
分布式事务:使用@GlobalTransactional注解,高效并且对业务零侵入地解决分布式事务问题.。
阿里云对象存储:阿里云提供的海富、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于Cron表达式)任务调度服务. 同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker (schedulerx-client) 上执行。
阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建 客户触达通道。
1.3.2 组件
- Sentinel:把流最作为切入点,从流景控制、熔断降级、系统员载保护等多个维度保护服务的稳定性。
- Nacos:一更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- RocketMQ: 一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
- Dubbo:Apache Dubbo 是一款高性能的java RPC框架
- Seata:阿里巴巴开源产品,—易于使用的高性能微服务分布式事务解决方案。
- Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心 产品。
- Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云提 供的海最、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和 访问任意类型的瞄。
- Alibaba Cloud SchedulerX:中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于Cron表达式)任务调度服务。
- Alibaba Cloud SMS:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速 搭建客户。
SpringCloudAlibaba 微服务讲解(一)微服务介绍的更多相关文章
- SpringCloudAlibaba 微服务讲解(二)微服务环境搭建
微服务环境搭建 我们这次是使用的电商项目的商品.订单.用户为案例进行讲解 2.1 案例准备 2.1.1 技术选型 maven :3.3.9 数据库:mysql 持久层:SpringData JPA S ...
- SpringCloudAlibaba 微服务讲解(三)Nacos Discovery-服务治理
3.1 服务治理 先来思考一个问题,通过上一章的操作,我们已经实现微服务之间的调用,但是我们把服务提供者的网络地址(ip,端口)等硬编码到了代码中,这种做法存在许多问题: 一旦服务提供者地址变化,就需 ...
- SpringCloudAlibaba 微服务讲解(四)Sentinel--服务容错(一)
4.1 高并发带来的问题 在微服务中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现网 ...
- Chris Richardson微服务翻译:微服务介绍
作者简介:Chris Richardson,世界著名的软件架构师,经典著作<POJOS IN ACTION>的作者,cloudfoundry.com 的创始人 微服务目前正受到大量的关注, ...
- SpringCloud微服务服务间调用之OpenFeign介绍
开发微服务,免不了需要服务间调用.Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用. Op ...
- 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 作者介绍:Chris Ric ...
- Dubbo Ecosystem - 从微服务框架到微服务生态
从微服务框架到微服务生态,这是微服务发展的必然趋势,也是Dubbo社区满足开发者更高效的构建微服务体系期望的使命和担当. 近期,Apache Dubbo PPMC 望陶(社区昵称:ralf0131)做 ...
- Chris Richardson微服务翻译:微服务部署
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署( ...
- Chris Richardson微服务翻译:微服务之事件驱动的数据管理
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理(本文) 微服 ...
随机推荐
- Ubuntu20.04.3中telnet 127.0.0.1时Unable to connect to remote host: Connection refused
本博客旨在自我学习使用,如有任何疑问请及时联系博主 今天遇到个稀奇古怪的问题: 调试emqx的时候一直econnrefused,检查服务时,突然发现在ubuntu上telnet localhost竟然 ...
- nginx 配置文件与日志模块
内容概要 Nginx 虚拟主机 基于多 IP 的方式 基于多端口的方式 基于多域名的方式 日志配置(日志格式详解) Nginx 访问控制模块(可以去 Nginx.org 文档 documentatio ...
- WMI简介和Event驻留
WMI (Windows Management Instrumentation,Windows管理规范) 从Windows 2000开始被包含于操作系统后,就一直是Windows操作系统的一部分. ...
- PyTorch图文安装教程(Win10),含遇到的问题及解决办法
PyTorch安装教程(Win10),含遇到的问题及解决办法 1. 环境准备 首先,打开PyTorch官网:https://pytorch.org/get-started/locally/ 向下可以看 ...
- [LeetCode]LCP 06. 拿硬币
桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数. 示例 1: 输入:[4,2,1] 输出:4 解释:第一堆力扣 ...
- WPF中TabControl控件和ListBox控件的简单应用(MVVM)
本文主要实现下图所示的应用场景: 对于Class1页,会显示用户的age和address属性,对于Class2页,会显示用户的age,address和sex属性.在左边的ListBox中选择对应的用户 ...
- centos网络配置、虚拟机克隆
查看网卡命令: ifconfig 查看网络配置 ifconfig -a 查看隐藏网卡 window下使用ipconfig 网络配置 设置静态IP,修改/etc/sysconfig/network-sc ...
- oj教程--坑
1.OJ判断是只看输出结果的. 2.纯字符串用puts()输出. 3.有很多数学题是有规律的,直接推公式或用递归.循环. 4.擅用三目运算符 5.将乘法转换成加法减少时间 6.空间换时间 7.数组越界
- 图表控件Tchart的使用总结
用了一段时间的Tchart,做下记录总结,以便日后查用,有新的记录会及时添加更新 鼠标右键选择Edit可以对图表进行编辑 添加所需图表: Chart --> Series--> Add 1 ...
- vue实时显示当前时间且转化为“yyyy-MM-dd hh:mm:ss”格式
在实际运用中时间格式"yyyy-MM-dd hh:mm:ss"用的最多,如果需要其他格式可根据需求自行修改,下面直接上代码: 引入相应的js即可运行 <!DOCTYPE ht ...