1.
2.约定>配置>编码
3.架构搭建流程:
建module、该pom、写yml、主启动、写业务
4.run dashboard
5.多个子项目用到同样的代码(util,commonbean。。。),封装成一个项目,然后引入
6.为什么要有eureka
如果是一个项目调用另一个项目,其实是不需要的,但是当有多个项目(a1,a2,a3…)去调用多个项目(b1,b2,b3…)时,项目(a)不知道项目中(b)哪个项目可用不可用、或者又有一个b4项目加进来,a又不知道。此时引入了eureka(注册于发现),eureka相当于中介,哪个(b)项目可以用,也会告诉a(b4)项目已经加进来。
7.为了解决单点故障(比如一个eureka,但是它挂掉了),一些微服务都会是多个
8.eureka 与 dubbo
9.eureka的两个组件
eureka server 提供注册服务,
eureka client 通过注册中心进行访问
服务->(服务名称:ip地址)
服务注册:把服务存入注册中心
服务发现:根据服务名获取ip地址(30秒更新一次)
10.单机eureka与集群eureka
1.修改网址与ip的映射文件,C:\Windows\System32\drivers\etc\host
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
这样在yml配置文件
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
11.instance配置(eureka主机名显示、ip地址显示)
配置前eureka显示
配置信息
instance:
instance-id: payment8001
prefer-ip-address: true
配置后eureka显示
12.eureka自我保护机制
当某一个微服务不可用、eureka不会立即清理,而是保护一段时间、属于cap理论里面的ap分支理论
13.zookeeper整合
添加依赖,
添加注解、@EnableDiscoveryClient //该注解用于想使用consul或者zookeeper作为注册中心时注册服务
启动zk
启动服务
继续
json zookeeper的相关信息
{
“name”: “cloud-provider-payment”,
“id”: “b1fc8adb-303f-42fa-8186-111ba0f6738e”,
“address”: “192.168.0.104”,
“port”: 8004,
“sslPort”: null,
“payload”: {
“@class”: “org.springframework.cloud.zookeeper.discovery.ZookeeperInstance”,
“id”: “application-1”,
“name”: “cloud-provider-payment”,
“metadata”: {}
},
“registrationTimeUTC”: 1603528552645,
“serviceType”: “DYNAMIC”,
“uriSpec”: {
“parts”: [
{
“value”: “scheme”,
“variable”: true
},
{
“value”: “😕/”,
“variable”: false
},
{
“value”: “address”,
“variable”: true
},
{
“value”: “:”,
“variable”: false
},
{
“value”: “port”,
“variable”: true
}
]
}
}
14.zookeeper节点默认是临时节点,一段时间没有心跳,则删除节点
15.consul,下载consul,运行consul agent -dev ,访问 http://localhost:8500/ui/dc1/services
16.eureka,zk,consul的关系
分布式要保证p,所以要么是cp、要么是ap
17.ribbon负载均衡,eureka自带ribbon依赖
客户端的负载均衡
nginx是挡在最前面的,然后才是ribbon
负载均衡分为两种
ribbon工作流程
18.自定义ribbon负载均衡规则,不能被@ComponentScan扫描到(不与启动类同包)
19.openfeign
20.openfeign的使用
21.hystrix:熔断(break)、降级fallback、限流flowlimit
服务降级:
原因:程序异常,程序超时,服务熔断触发服务降级,线程池满等情况
解决:服务器忙,请稍后再试。不让客户等待,返回一个友好提示
服务熔断:
原因:达到最大服务访问量等情况,直接拒绝访问
解决:以服务降级的方式解决,然后慢慢恢复
服务限流:
原因:抢购系统
解决:大家排队,一秒处理N个,有序进行
22.一般服务降级放在客户端(运行异常、超时、宕机)
23.hystrix 图形化界面http://localhost:9001/hystrix
24.zuul与Gateway。网关的位置
25.Gateway的三个概念:路由(Router)、断言(Predicate)、过滤(Filter):全局日志,通用鉴定权限
路由配置有两种方式:yml配置,注入bean配置
总结: