Skip to content

Commit 7e6df52

Browse files
author
文亮
committed
add .
1 parent 1c3d1c8 commit 7e6df52

File tree

7 files changed

+111
-0
lines changed

7 files changed

+111
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@
198198
- [22、说说生产环境下,你们是怎么实现网关对服务的动态路由的?](/docs/distributed-system/dynamic-route.md)[代码下载点击这里哦!](https://github.com/shishan100/Java-Interview-Advanced/raw/master/docs/distributed-system/code/code2.zip)
199199
- [23、如果网关需要抗每秒10万的高并发访问,你应该怎么对网关进行生产优化?](/docs/distributed-system/gateway-high-concurrency.md)
200200
- [24、作业:你们公司的网关是怎么技术选型的,假设有高并发场景怎么优化?](/docs/distributed-system/gateway-technical.md)
201+
- [25、如果需要部署上万服务实例,现有的服务注册中心能否抗住?如何优化?](/docs/distributed-system/registration-center-optimize.md)
202+
- [26、你们是如何基于网关实现灰度发布的?说说你们的灰度发布方案?](/docs/distributed-system/gray-environment.md)[代码下载点击这里哦!](https://github.com/shishan100/Java-Interview-Advanced/raw/master/docs/distributed-system/code/code3.zip)
203+
- [27、说说你们一个服务从开发到上线,服务注册、网关路由、服务调用的流程!?](/docs/distributed-system/service-register-gateway-router.md)
204+
- [28、作业:看看你们公司的服务注册中心能否支撑上万服务实例的大规模场景?](/docs/distributed-system/work-register.md)
201205

202206

203207
### 第二季-高并发
25 KB
Binary file not shown.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
#### 准备一个数据库和一个表(也可以用Apollo配置中心、Redis、ZooKeeper,其实都可以),放一个灰度发布启用表
3+
4+
```
5+
id service_id path enable_gray_release
6+
7+
CREATE TABLE `gray_release_config` (
8+
`id` int(11) NOT NULL AUTO_INCREMENT,
9+
`service_id` varchar(255) DEFAULT NULL,
10+
`path` varchar(255) DEFAULT NULL,
11+
`enable_gray_release` int(11) DEFAULT NULL,
12+
PRIMARY KEY (`id`)
13+
) ENGINE=InnoDB DEFAULT CHARSET=utf8
14+
15+
16+
17+
在zuul里面加入下面的filter,可以在zuul的filter里定制ribbon的负载均衡策略
18+
19+
<dependency>
20+
<groupId>io.jmnarloch</groupId>
21+
<artifactId>ribbon-discovery-filter-spring-cloud-starter</artifactId>
22+
<version>2.1.0</version>
23+
</dependency>
24+
25+
写一个zuul的filter,对每个请求,zuul都会调用这个filter
26+
27+
@Configuration
28+
public class GrayReleaseFilter extends ZuulFilter {
29+
30+
@Autowired
31+
private JdbcTemplate jdbcTemplate;
32+
33+
@Override
34+
public int filterOrder() {
35+
return PRE_DECORATION_FILTER_ORDER - 1;
36+
}
37+
38+
@Override
39+
public String filterType() {
40+
return PRE_TYPE;
41+
}
42+
43+
@Override
44+
public boolean shouldFilter() {
45+
46+
}
47+
48+
@Override
49+
public Object run() {
50+
RequestContext ctx = RequestContext.getCurrentContext();
51+
HttpServletRequest request = ctx.getRequest();
52+
53+
Random random = new Random();
54+
int seed = random.getInt() * 100;
55+
56+
if (seed = 50) {
57+
// put the serviceId in `RequestContext`
58+
RibbonFilterContextHolder.getCurrentContext()
59+
.add("version", "new");
60+
} else {
61+
RibbonFilterContextHolder.getCurrentContext()
62+
.add("version", "old");
63+
}
64+
65+
return null;
66+
}
67+
}
68+
```
69+
70+
eureka:
71+
instance:
72+
metadata-map:
73+
version: new
74+
75+
76+
Loading
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
![分布式注册中心](/docs/distributed-system/images/registration-center-optimize.png)
3+
#### eureka:peer-to-peer,每台机器都是高并发请求,有瓶颈
4+
#### zookeeper:服务上下线,全量通知其他服务,网络带宽被打满,有瓶颈
5+
6+
#### 分布式服务注册中心,分片存储服务注册表,横向扩容,每台机器均摊高并发请求,各个服务主动拉取,避免反向通知网卡被打满
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
#### 生产环境,微服务生产实践
3+
4+
开发了一个新的服务,线上部署,配合网关动态路由的功能,在网关里配置一下路径和新服务的映射关系,此时请求过来直接就可以走到新的服务里去
5+
6+
对已有服务进行迭代和开发,新版本,灰度发布,新版本部署少数几台机器,通过一个界面,开启这个服务的灰度发布,**此时zuul filter启用,按照你的规则,把少量的流量打入到新版本部署的机器上去**
7+
8+
观察一下少量流量在新版本的机器上运行是否正常
9+
10+
版本改成current,全量机器部署,关闭灰度发布功能,网关就会把流量均匀分发给那个服务了
11+
12+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
#### Dubbo框架原理
3+
#### Spring Cloud框架原理
4+
#### 服务框架的技术选型
5+
6+
#### 服务注册中心技术选型和核心原理
7+
#### 生产优化
8+
#### 架构优化
9+
10+
#### 网关系统技术选型和核心原理
11+
#### 生产优化(灰度发布、动态路由)
12+
13+
#### 生产级的分布式系统里,新服务开发如何做,老服务迭代如何做

0 commit comments

Comments
 (0)