SpringCloud:
回顾之前的知识~
- JavaSE
- 数据库
- 前端
- Servlet
- Http
- Mybatis
- Spring
- SpringMVC
- SpringBoot
- Dubbo、Zookeeper、分布式基础
- Maven、Git
- Ajax、Json
…/.
串一下自己会的东西
- 数据库
- Mybatis
- Spring
- SpringMVC
- SpringBoot
- Dubbo、Zookeeper、分布式基础
- Maven、Git
- Ajax、Json
这几段该如何学~
三层架构+MVC
框架:
Spring IOC AOP
SpringBoot,新一代的JavaEE开发标准,自动装配
模块化~ all in one
模块化的开发===all in one,代码没变化
微服务架构4个核心问题?
1.服务很多,客户端该怎么访问?
2.这么多服务?服务之间如何通信?
3.这么多服务?如何治理?
4.服务挂了怎么办?
解决方案:
SpringCloud 生态! SpringBoot
1.Spring Cloud NetFlix 一站式解决方案!
api网关,zuul组件
Feign---HttpClinet---Http通信方式,同步,阻塞
服务注册发现:Eureka
熔断机制:Hystrix
。。。
2.Apache Dubbo Zookeeper 半自动,需要整合别人的!
API:没有,找第三方组件,或者自己实现
Dubbo
Zookeeper
没有:借助Hystrix
Dubbo这个方案并不完善
3.Spring Cloud Alibaba一站式解决方案!
新概念:服务网格~Server Mesh
istio
万变不离其宗
1.API
2. HTTP,RPC
3. 注册和发现
4.熔断机制
2.微服务和微服务架构
2.1微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能地服务,
一个服务做一件事情,从技术角度看就是一种小而独立地处理过程,类似进程地概念,能够自行单独启动或销毁,拥有自己独立的数据库。
2.2微服务和微服务架构
微服务(一个模块,个体):强调的是服务大小,他关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义的看,可以看作是IDEA中的一个个微服务工程,或者Moudel,
它具体是使用SpringBoot开发的一个小模块,专业的事情交给专业的模块来做,一个模块就做这一件事情。
强调的是一个个的个体,每个个体完成一个具体的任务或者功能。
微服务架构(架构,整体)
3.2、SpringCloud和SpringBoot关系
- SpringBoot专注于快速方便的开发单个个体微服务。-jar包打包放到服务器上去运行
- SpringCloud是关注全局的微服务协调整理治理框架,他将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务。
- SpringBoot可以离开SpringCloud独立使用,开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系
- SpringBoot专注于快捷、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架。
3.3、Dubbo和SpringCloud技术选型
1、分布式+服务治理Dubbo
目前成熟的互联网架构:应用服务拆分化+消息中间件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfSH334c-1618905188206)(D:\Pictures\lanke\SpringCloud的整体架构图.png)]
2、Dubbo和SpringCloud对比
Dubbo | Spring | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netfilx Hystrix |
服务网关 | 无 | Spring Cloud Netfilx Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
总结:
- 设计模式+微服务拆分思想
GA:通用稳定版本
SpringCloud是一个由众多独立子项目组成的大型综合项目,每个子项目由不同的发行节奏,都维护着自己的发布版本号。SpringCloud通过一个资源清单BOM(Bill of Materials)来管理每个版本的子项目清单。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。
这些版本号名称的命名方式采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如:最早的是Release版本:Angel,第二个Release版本:Brixton,然后是Camden,Dalston,Edgware,目前最新的是Finchley版本。
参考书:
- https://springcloud.cc/spring-cloud-netfilx.html
- 中文API文档:https://springcloud.cc/spring-cloud-dalston.html
- SpringCloud中国社区:http://springcloud.cn/
- SpringCloud中文网:https://springcloud.cc
希望认真吸收,在面试中和别人的谈资