一、什么是微服务
-
一种架构模式、风格
-
提倡将单一的应用拆分成小的模块
-
服务之间相互协调、配合
-
采用轻量级的通信机制-RPC、restful
二、微服务解决了什么问题、有哪些优点
-
a.拆分单体应用彻底去耦合、不相互依赖
b.每个模块只做一件事、单一职责原则
c.每个模块可以单独启动、动态缩放扩容 -
产品维度
a.多团队协同开发
b.合理分配资源
c.模块规划更清晰
三、微服务有哪些痛点
-
调用变得复杂
-
数据一致性变得复杂
-
部署变得复杂
-
问题定位变得复杂
四、单体应用大概是什么样子
a.豪华大礼包 代码结构臃肿
b.模块耦合度高 维护困难
c.Ctrl CV大法 工作量重复 冗余代码
d.长年累月积累 逻辑复杂
五、单体向微服务演变过程
1. CoreOS 系统,小型unix系统只包含核心模块
2. 容器化 docker Dockerfile Tomcat
3. 容器编排 k8s
六、SpringCloud 五大神兽
-
Eureka 注册与发现 netflix
a.包含两个组件 server、client
b.基于restful服务
c.应用启动后 默认30s,发送一次心跳到 server 可以配置
d.多次接收不到心跳,会移除节点 默认90s
e.缩放、扩容核心
2. Zuul gateWay网关
a.对外暴露API
b.路由功能
c.集成单点登录 USERINFO---JWT json token web
3. Ribbon 负载均衡 Netflix
a.客户端负载均衡 b.轮询、权重、hash c.nginx 服务端负载均衡 家长---门卫---班级
4. Hystrix 熔断器 Netflix
a.来源于电器 b.保险丝 c.雪崩效应
5. config 配置中心
a.spring config b.apollo 携程 c.区分环境 d.动态刷新