分布式架构及微服务介绍
分布式架构
优点:耦合度低, 便于扩展
缺点:架构复杂,运维成本大
- 微服务治治理
- 异步通信技术
- 缓存技术
- 搜索技术
- devops
微服务
微服务是分布式架构一种较好的实践,常见的微服务技术是springcloud
单一职责: 每一个服务对应唯一的业务能力
面向服务:微服务向外暴露接口
自治:团队独立、技术独立、数据独立、部署独立
隔离性强: 服务调用做好隔离、容错、降级、避免出现级联问题
springcloud介绍
- springcloud是分布式的一种解决方案,它将项目拆分成一个个服务(降低耦合),目的是为了减轻服务器的压力,增加了部署难度
- 拆分会造成使架构更复杂,造成更多的问题,中途又出现很多技术来解决问题,springcloud将这些技术整合起来
微服务组件
- 微服务将业务进行拆分、解耦,不同业务单独建一个springboot,会造成一个个问题,主要有下面5中技术解决微服务出现的问题常常被叫做微服务治理
- 注册中心
- 服务远程调用
- 配置中心
- 服务网关
- 服务监控与保护
服务调用层
- rpc (remote process call) 远程过程调用
- rpc是一种概念,为分布式设计,duboo、grpc可以实现
- 保持长连接,从而效能高
- rpc能够对服务进行解耦、耦合性高
- 服务解耦:本地调用远程的方法,这个调用是透明的,并不知道这个调用的方法是部署哪里
- 耦合性高: 调用者需要知道所调用接口的函数名、参数格式、参数顺序、参数名称等
- rpc = socket + 动态代理
restful (representational state transfer) 性状态转移或表征状态转移
- 是一种设计风格,基于http协议,可以使用xml格式定义或json格式定义
- resource: 通过url、rui去标识、定位资源
- representational:资源的表现形式,如json、xml
- state transfer:http是一个无状态协议,所有状态保存在服务器端、客户端想要获取服务端信息,需要通过http的请求(get、post、put、delete等)获取,这种状态转移发生在osi模型的表现层,叫做无状态转移
soap (Simple Object Access Protocol) 简单对象访问协议
- 是一种交换数据的一种协议规范
- 基于xml,实现技术是webService
dubbo:是基于rpc的,并发高的场景
openfeign: 基于restful的,并发低的场景
微服务远程调用
这个业务需要另外一个业务的数据,这个时候就会涉及到远程调用,远程调用的技术要用到feign或者dubbo,feign是我们常见的restful风格的请求用的是http协议、dubbo着用的rpc协议
跨服务的远程调用,实际上就是发送一个http请求,RestTemplate可以调用帮我们发送一个http请求,请求到别的业务的接口,并返回对应的数据对象例子:首先在启动类注册一个RestTemplate对象,然后使用 restTemplate.getObject(url, Entity.class); 缺点是这种方式是硬编码,不适用于与并发集群、profieles
替代RestTemplate的有两种技术是:Dubbo、openfeign
Eureka(注册中心)
服务之间存在服务之间互相调用的问题,它的角色是基于具体的业务,抛开业务,它既可以是提供者又可以是消费者
解决消费者与提供者集群的问题,这个和nginx负载均衡是一样的,Eureka来记录生产者与消费者,它帮我们管理请求的接收与分发,提供者每个30s会向Eureka发送心跳,来确定这个提供者是否挂掉,如果挂掉会剔除掉这个提供者
Eureka-Server 服务端记录服务信息、心跳监控
EurekaClient
- Provider: 服务提供者
- Consumer: 服务消费者
网关
没有网关,所有人都可以访问,为了安全加入了网关
功能:身份认证和权限校验、服务路由、负载均衡、请求限流
技术有: getway是spring5中WebFlux实现的是响应式的、zuul是Servlet实现(阻塞式)
微服务5大组件: 注册中心、服务远程调用、配置中心、服务网关、服务监控和保护
微服务技术体系: doubble、springcloud、springCloudAlibaba
Dubbo | springCloud | springCloudAlibaba | |
---|---|---|---|
注册中心 | zookeeper、Redis | Eureka,Consul、zokeeper | Nacos、Eureka |
服务远程调用 | Doubbo协议 | Feign(http协议) | Doubbo、openFeign |
配置中心 | 无 | SpringcloudConfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服务监控和保护 | dobbo-admin | Hystrix | Sentinel |
服务总线 | bus | Nacos |
springcloud与springBoot版本兼容问题
- springcloud版本参考:https://spring.io/projects/spring-cloud#overview
- springAlibaba版本参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
微服务特点
约定 > 配置 > 编码
组件之间可以互相选择
springcloud+dubbo+nacos+sentinel+seata
springcloud+feign+nacos+sentinel+seata
分布式架构及微服务介绍相关推荐
- 单体架构、分布式架构、微服务概述
单体架构.分布式架构.微服务概述 一.单体架构 二.分布式架构 三.微服务 总结 集群:同一个应用,部署在不同的服务器 服务:业务功能拆分独立成一个模块(业务模块) 一.单体架构 单体架构:将业务的所 ...
- 一文看懂Java微服务架构,WEB2.0,垂直架构,分布式架构,微服务架构
Java微服务架构 目录: 了解开发环境&生成环境 WEB1.0 & WEB2.0 垂直架构 分布式架构 微服务架构 1.了解开发环境&生产环境 1.1 开发环境 平时在写代码 ...
- 分布式架构,微服务、限流、熔断....
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节. 要理解微服务,首先要先理解不是微服 ...
- JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构
javaEE架构 1.传统三层架构(all in one项目) 传统三层架构大致可以分为表现层,业务层和持久层(数据访问层).其中表现层负责接受请求和转发请求.业务层负责处理请求(注:事务管理,日志记 ...
- 微服务【分布式架构认识微服务SpringCloud】第1章
目录 1,认识微服务 1.1,单体架构 1.2,分布式架构 1.3,微服务 1.4,SpringCloud 1.5,总结
- 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式
文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...
- SOA架构和微服务架构之间的关系
写在前面: 你好,欢迎你的阅读! 我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的! 博客里面的内容大部分均为原创,是自己日常的学习记录和总结,便于自己在后面的时间里回顾,当然 ...
- 从单体架构到微服务架构的拆分
目录 一.概述 二.微服务拆分 三.微服务项目架构图 一.概述 单体架构.分布式架构和微服务架构是三种不同的软件架构模式,它们各有特点和适用场景. 单体架构(Monolithic Architectu ...
- 【架构】分布式服务架构与微服务架构
文章目录 0)服务相关架构的演变 *关于面向对象.面向组件.面向服务 1)面向服务架构(SOA) 1.1 什么是面向服务架构(SOA)? 1.2 为什么需要SOA? 1.3 SOA 的特征 1.4 S ...
最新文章
- RDD基本转换操作:zipWithIndex、zipWithUniqueId
- STM32H743+Cube-Keil上移植RTX5实时系统
- python获取上个月最后一天_在Python中获取本月的最后一天
- 国内pinterest模式昙花一现 社交电商不该这么玩
- 计算机代数与密码学,代数曲线与密码学
- hls ask 调制
- 如何利用ikuai将闲置电脑配作软路由器?
- 大数据产品推荐:Stratifyd大数据智能分析平台
- PNG图片背景透明-简单方法
- JAVA导出EXCEL——POI(转)
- PPT柱形统计图制作详情——小白秒变大神
- filebeat报错:Harvester could not be started on exist file
- 脱不花《沟通的方法》读书笔记(一):学会倾听
- AToken全观:情人节妹子收了520个BTC,成吨狗粮灌到饱
- 网上书城(搜索页,购物车)
- 【CF#715C】Digit Tree 点分治+乘法逆元
- c语言延时时间计算器,RC延时电路延时时间计算
- 7-3 学习打卡(11.28)
- 从冷战到深度学习:一篇图文并茂的机器翻译史
- 香港电讯及华为完成全球首个HSS/VoLTE系统转移