生产级微服务网关可以扩展的地方

最近学习了一下网关相关的内容,一般的网关组成如下:

路由映射表:基于域名的路由,存放域名host和服务service的映射关系;可静态配置也可动态配置(需要对接服务发现的产品,比如consul等)

HTTPClient映射表:存放服务(service)和访问服务的httpclient之间的映射关系,是基于路由映射表构建的,若路由表更新那么HTTPClient映射表也会相应更新;在网关初始化时或路由映射表更新时会提前初始化每个服务使用的HTTPClient映射表。

路由解析:在接受到一个HTTP请求的时候,取出其中的host 域名信息,通过查询这个路由映射表找到对应的目标服务,包括服务名地址啊,其他的一些配置。然后呢,将请求啊交付给下一个环节进行处理。

请求转发:是负责这个转发请求的一个组件,当它获得请求和目标服务的信息时,通过查询HTTPClient映射表找到对应的HTTPClient,将请求转发到目标服务,并且接收这个服务产生的响应,并最终将这个响应返回给第二方。如果网关启用了负载均衡lb 的能力,那么请求转发还要根据一定的规则计算出实际要访问的这个服务实例的地址再进行转发,所以这个转发器上面可以有一定的负载均衡的能力。

请求响应截获器:可以扩展网关的能力,实现部分认证健全、日志监控等功能。

生产级网关可以扩展的地方:

1).限流熔断:保障客户体验和后台服务。

2).动态路由/负载均衡:对接动态服务发现。k8s服务本身有动态服务发现和负载均衡的功能,若是k8s部署可以不用扩展这部分。

3).基于path的路由:根据请求path来映射转发请求。

4).截获器链:多个请求响应截获器。

5).日志采集和Metrics埋点:网关是流量的集中入口,是进行集中监控的理想场所,一方面可以对所有的请求日志进行采集,后续可以基于这些访问日志做进一步的性能分析,也可以基于这个日志分析实现反爬虫防攻击的功能。另一方面,这个通过Metrics埋点,我们可以进一步掌握网关和后台服务的性能状况,主要包括访问量统计,延迟统计,还有错误统计等等。

6).响应流优化:faraday网关对响应数据大小有一定的限制,不适用那种大响应数据的场景,比如大文件的下载,这个会对网关有影响。实际的生产级高性能网关是具有这个响应流优化的,也就是不会把这个响应数据从那个内核态拷贝到用户态,而是直接以流的形式流过网关,这样性能开销就比较小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值