Skip to content

Commit ac2f45a

Browse files
author
文亮
committed
add doc
1 parent 7113a56 commit ac2f45a

File tree

7 files changed

+95
-0
lines changed

7 files changed

+95
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@
194194
- [18、画图阐述一下你们的服务注册中心部署架构,生产环境下怎么保证高可用?](/docs/distributed-system/register-high-availability.md)
195195
- [19、你们系统遇到过服务发现过慢的问题吗?怎么优化和解决的?](/docs/distributed-system/service-register-discovery.md)
196196
- [20、作业:说一下自己公司的服务注册中心怎么技术选型的?生产环境中应该怎么优化?](/docs/distributed-system/register-production-optimize.md)
197+
- [21、你们对网关的技术选型是怎么考虑的?能对比一下各种网关技术的优劣吗?](/docs/distributed-system/gateway-model-selection.md)
198+
- [22、说说生产环境下,你们是怎么实现网关对服务的动态路由的?](/docs/distributed-system/dynamic-route.md)[代码下载点击这里哦!](https://github.com/shishan100/Java-Interview-Advanced/raw/master/docs/distributed-system/code/code2.zip)
199+
- [23、如果网关需要抗每秒10万的高并发访问,你应该怎么对网关进行生产优化?](/docs/distributed-system/gateway-high-concurrency.md)
200+
- [24、作业:你们公司的网关是怎么技术选型的,假设有高并发场景怎么优化?](/docs/distributed-system/gateway-technical.md)
197201

198202

199203
### 第二季-高并发
19.1 KB
Binary file not shown.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
```
2+
CREATE TABLE `gateway_api_route` (
3+
`id` varchar(50) NOT NULL,
4+
`path` varchar(255) NOT NULL,
5+
`service_id` varchar(50) DEFAULT NULL,
6+
`url` varchar(255) DEFAULT NULL,
7+
`retryable` tinyint(1) DEFAULT NULL,
8+
`enabled` tinyint(1) NOT NULL,
9+
`strip_prefix` int(11) DEFAULT NULL,
10+
`api_name` varchar(255) DEFAULT NULL,
11+
PRIMARY KEY (`id`)
12+
) ENGINE=InnoDB DEFAULT CHARSET=utf8
13+
14+
INSERT INTO gateway_api_route (id, path, service_id, retryable, strip_prefix, url, enabled) VALUES ('order-service', '/order/**', 'order-service',0,1, NULL, 1);
15+
16+
```
17+
18+
你可以自己用简单的spring mvc+前端页面封装一个可视化的网关管理工作台,如果新开发了一个服务之后,就可以在这个界面上配置一下,说某个服务对应某个url路径,修改,增删改查
19+
20+
http://localhost:9000/order/order/create?productId=1&userId=1&count=2&totalPrice=50
21+
22+
生产级,企业级的功能,网关的动态路由
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
第一个是高并发,第二个是如何优化
3+
4+
![高性能网关Zuul](/docs/distributed-system/images/gateway-high-concurrency.png)
5+
**Zuul**网关部署的是什么配置的机器,**部署32核64G,对网关路由转发的请求****每秒抗个小几万请求是不成问题的,几台Zuul网关机器**
6+
7+
**每秒是1万请求,8核16G的机器部署Zuul网关,5台机器就够了**
8+
9+
### 生产级的网关,应该具备我刚才说的几个特点和功能:
10+
11+
#### (1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知
12+
#### (2)灰度发布:基于现成的开源插件来做
13+
#### (3)授权认证
14+
#### (4)限流熔断
15+
#### (5)性能监控:每个API接口的耗时、成功率、QPS
16+
#### (6)系统日志
17+
#### (7)数据缓存
18+
19+
20+
21+
22+
23+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
###网关的核心功能
3+
4+
#### (1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知
5+
#### (2)灰度发布
6+
#### (3)授权认证
7+
#### (4)性能监控:每个API接口的耗时、成功率、QPS
8+
#### (5)系统日志
9+
#### (6)数据缓存
10+
#### (7)限流熔断
11+
12+
13+
###几种技术选型
14+
15+
#### Kong、Zuul、Nginx+Lua(OpenResty)、自研网关
16+
17+
**Kong:Nginx里面的一个基于lua写的模块,实现了网关的功能**
18+
**Zuul:Spring Cloud来玩儿微服务技术架构,Zuul**
19+
20+
**Nginx+Lua(OpenResty):课程目录里面,有一个文档,课程免费学习,亿级流量系统架构的课程,详细讲解了Nginx+Lua的开发**,基于lua自己写类似Kong的网关
21+
**自研网关:自己来写类似Zuul的网关,基于Servlet、Netty来做网关,实现上述所有的功能**
22+
23+
24+
大厂:BAT、京东、美团、滴滴之类的,自研网关,都是基于Netty等技术自研网关;Nginx + Lua(Tengine)来做,封装网关的功能
25+
26+
中小型公司:Spring Cloud技术栈主要是用Zuul,Gateway;如果是Dubbo等技术栈,有的采用Kong等网关,也可以直接不用网关,很多公司压根儿就没用网关,直接Nginx反向代理+负载均衡;
27+
28+
Zuul:基于Java开发,核心网关功能都比较简单,但是比如灰度发布、限流、动态路由之类的,很多都要自己做二次开发
29+
30+
Kong:依托于Nginx实现,OpenResty,lua实现的模块,现成的一些插件,可以直接使用
31+
32+
33+
34+
Zuul(Servlet、Java):高并发能力不强,部署到一些机器上去,还要基于Tomcat来部署,Spring Boot用Tomcat把网关系统跑起来;Java语言开发,可以直接把控源码,可以做二次开发封装各种需要的功能
35+
36+
Nginx(Kong、Nginx+Lua):Nginx抗高并发的能力很强,少数几台机器部署一下,就可以抗很高的并发,精通Nginx源码,很难,c语言,很难说从Nginx内核层面去做一些二次开发和源码定制
37+
38+
39+
Java技术栈为主的大厂,很多其实用Java、Servlet、Netty来开发高并发、高性能的网关系统,自己可以把控一切
40+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
服务框架的原理和技术选型,你们公司到底是怎么选,为什么?
3+
4+
服务注册中心,思考,你们公司到底是怎么选的,生产环境有没有做一些优化,如果没有,哪些地方是有优化空间的?
5+
6+
网关系统,思考,你们公司是怎么选型的,为什么?生产环境是否对类似动态路由的功能做过优化,如果没有是否有优化空间?
Loading

0 commit comments

Comments
 (0)