1.1、内容概述
学习前提:
- JavaSE
- 数据库
- 前端
- Servlet
- Http
- Mybatis + Spring + SpringMVC
- Springboot
- Dubbo + Zookeeper + 分布式基础
- Maven + Git
- Ajax + Json
- …
这个阶段如何学习?
三层架构 + MVC
框架:
Spring(轻量级的Java开源框架):解决企业开发的复杂性 IOC、AOP
SpringBoot(Spring的升级版):新一代的JavaEE开发标准 自动装配
模块化~ all in one
模块化的开发===all in one 代码没发生变
微服务架构4个核心问题:
1. 服务很多,客户端怎么访问?
2. 这么多服务,服务之间如何通信?
3. 这么多服务,如何治理?
4. 服务挂了怎么办?
解决方案选型:
SpringCloud 是一种生态! 学习前提已经会使用Springboot,有分布式基础,了解Dubbo+ZooKeeper
1. Spring Cloud NetFlix(已经停止维护):一站式解决方案!可解决上述4个核心问题
API网关:zuul组件
通信:Feign ---- HttpClient ---- Http通信方式,同步,阻塞
服务注册和发现:Eureka
熔断机制:Hystrix
......
2. Apache Dubbo Zookeeper:半自动!需要整合别人的
API网关:没有,找第三方组件(比如整合zull组件),或者自己实现
通信:Dubbo 是一个基于Java的高性能的RPC通信框架(性能比Feign强大)
服务注册和发现:Zookeeper
熔断机制:没有,需要借助Hystrix
3. Spring Cloud Alibaba:目前最新的一站式解决方案!可解决上述4个核心问题,更简单
API网关:
通信:
服务注册和发现:
熔断机制:
新概念:服务网格~ Server Mesh
istio
万变不离其宗4个问题:
1. API网关
2. HTTP,RPC通信
3. 注册和发现
4. 熔断机制
1.2、常见面试题
-
什么是微服务?
-
微服务之间是如何独立通讯的?
-
SpringCloud 和 Dubbo有那些区别?
-
SpringBoot 和 SpringCloud,请谈谈你对他们的理解
-
什么是服务熔断?什么是服务降级?
-
微服务的优缺点分别是什么?说下你在项目开发中遇到的坑
-
你所知道的微服务技术栈有哪些?列举一二
-
Eureka和Zookeeper都可以提供服务注册与发现的功能,请说说两者的区别