1.微服务
大的应用拆分成小的模块 http restful api
2.微服务的自动化部署
1.单体项目 修改配置文件 打包上传 运行
2. 30个模块 生产环境 测试环境
12点发行版本 停服更新 不停服更新
ci/cd 持续集成持续交付环境 一点(运维)
jenkins
3.微服务的缺点
1.项目复杂
2.分布式事务问题
3.怎么拆
4.部署 不用自动化搭建麻烦
4.微服务(概念)与springcloud(实现)的关系
spring官方 Netflix alibaba 三个公司提供支持
- 常见的版本 HGI 有版本对应关系git查看版本关系
或者spring官方查看 springboot
alibaba提供了很多组件
6.要学习的对象 spring netflix alibaba
服务注册与发现 consul eureka nacos (可以混用)
负载均衡 ribbon dubbo
互相调用 openfeign dubbo
容错 hystrix sentinel
网关 gateway zuul
服务配置统一管理(管理配置文件,不用本地改了) config-server nacos apollo(美团技术点评,看看技术)
消息总线 bus
服务安全组件 security oauth2.0
服务监控 admin jvm
链路追踪 sleuth+zipkin
7.eureka是注册和发现中心
1.eureka和zookeeper的区别 cap原则
一致性consistency 多个机器的数据一样
可用性 当一个挂掉,服务能否使用
分区容错性 网络或机房不在同一地区(分区)
导致数据短暂的不一致
只能得2者 zookeeper: cp数据一致 一个服务挂了,几分钟需要恢复
eureka: ap数据不一致
8.eureka可以别人注册和自己注册主机(boot2.3.12.RELEASE cloud使用Hoxton.SR12)
eureka-server
eureka-client
在项目文件键springboot项目找 eureka依赖 方便管理
//什么叫dependencyManagement
//什么properties可以管理依赖版本,没有用就不加依赖,可以管理版本号
//写配置端口erueka默认的端口
server:
port :8761
spring:
application:
name: eureka-server #应用名称,不要特殊符号,会变大写
//左边的笔可以改名称
//启动类
@EnableEurekaServer
// 面板 DS Replicas 集群信息
//instance currentlu 当前eureka注册的实例(真正的服务 信息)
//up代表上线 down下线 后面跟着实例的id
//机器的主机名称:实例名字:端口
//搞个客户端
//选择依赖 web 和 eureka
server:
port :8080 #客户端对端口没有要求
spring:
application:
name: eureka-client-a
#发注册信息,往哪里注册
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
#开启客户端功能,打印出来204说明成功了
@EnableEruekaClient
#一个注册2个端口 run configuration里面加
#copy configuration 改名字 改端口
program arguments --server.port=8083
9.手写注册中心
1.需要服务列表保存应用列表
2.应用下线就列表需要把列表清理
1.主动下线 向注册中心发信息下线
2.被动下线 注册中心t下线
3.应用和注册中心需要建立联系(心跳机制,发请求得响应)
通过心跳缓存client其他节点访问块
4.脏读问题(client b服务下线了,a会暂时不知道)
5.同时间上大量服务不联系注册中心,则宁可放过一万不错杀一个
10.服务端配置文件
eureka:
server:
eviction-internal-timer-in-ms :10000 #毫秒 10秒检查没有剔除client
renewal-percent-threshold: 0.85 #续约百分比,85%不发心跳 他不剔除服务
instance: #实例的配置
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true #以ip显示
lease-renewal-interval-in-seconds: 5 #5秒续约自己server
11.客户端配置文件
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
register-with-eureka: true #不去注册中心注册
fetch-registery: true #拉取服务列表到本地
registry-fetch-interval-seconds: 10 #拉取列表时间
instance:
hostname: localhost #应用的主机名称
prefer-ip-address: true #以ip显示
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
lease-renewal-interval-in-seconds: 10 #续约注册中心的时间