建设网站安全措施,云霄县建设局网站投诉,网络是干什么的,营口市城乡住房建设局网站博客昵称#xff1a;架构师Cool 最喜欢的座右铭#xff1a;一以贯之的努力#xff0c;不得懈怠的人生。 作者简介#xff1a;一名退役Coder#xff0c;软件设计师/鸿蒙高级工程师认证#xff0c;在备战高级架构师/系统分析师#xff0c;欢迎关注小弟#xff01; 博主小… 博客昵称架构师Cool 最喜欢的座右铭一以贯之的努力不得懈怠的人生。 作者简介一名退役Coder软件设计师/鸿蒙高级工程师认证在备战高级架构师/系统分析师欢迎关注小弟 博主小留言哈喽各位CSDN的uu们我是你的小弟Cool希望我的文章可以给您带来一定的帮助 个人百万笔记知识库 所有基础的笔记都在这里面啦点击左边蓝字即可获取助力每一位未来架构师 欢迎大家在评论区唠嗑指正觉得好的话别忘了一键三连哦 网关策略1、流量治理1-1、API鉴权1-2、集群隔离1-3、请求隔离1-4、灰度发布2、监控告警2-1、立体化监控2-2、多维度告警3、关键设计3-1、异步外调3-2、外调链接池化3-3、释放连接3-4、对象池化设计3-5、上下文切换3-6、监控告警4、解决方案4-1、Shepherd API网关4-2、Mashape Kong4-3、Soul4-4、Apiman4-5、Gravitee4-6、Tyk4-7、Traefik4-8、小豹API网关1、流量治理
1-1、API鉴权
请求安全是API网关非常重要的能力集成了丰富的安全相关的系统组件包括有基础的请求签名、SSO单点登录、基于SSO鉴权的UAC/UPM访问控制、用户鉴权Passport、商家鉴权EPassport、商家权益鉴权、反爬等等。业务研发人员只需要简单配置即可使用。
1-2、集群隔离
API网关按业务线维度进行集群隔离也支持重要业务独立部署。如下图所示 1-3、请求隔离
服务节点维度API网关支持请求的快慢线程池隔离。快慢线程池隔离主要用于一些使用了同步阻塞组件的API例如SSO鉴权、自定义鉴权等可能导致长时间阻塞共享业务线程池。快慢隔离的原理是统计API请求的处理时间将请求处理耗时较长超过容忍阈值的API请求隔离到慢线程池避免影响其他正常API的调用。除此之外也支持业务研发人员配置自定义线程池进行隔离。具体的线程隔离模型如下图所示 1-4、灰度发布
API网关作为请求入口往往肩负着请求流量灰度验证的重任。
灰度场景
在灰度能力上支持灰度API自身逻辑也支持灰度下游服务也可以同时灰度API自身逻辑和下游服务。如下图所示 灰度API自身逻辑时通过将流量分流到不同的API版本实现灰度能力灰度下游服务时通过给流量打标分流到指定的下游灰度单元中。
灰度策略
支持丰富的灰度策略可以按照比例数灰度也可以按照特定条件灰度。
2、监控告警
2-1、立体化监控
API网关提供360度的立体化监控从业务指标、机器指标、JVM指标提供7x24小时的专业守护如下表
监控模块主要功能1统一监控Raptor实时上报请求调用信息、系统指标负责应用层JVM监控、系统层CPU、IO、网络监控2链路追踪Mtrace负责全链路参数透传、全链路追踪监控3日志监控Logscan监控本地日志异常关键字如5xx状态码、空指针异常等4远程日志中心API请求日志、Debug日志、组件日志等可上报远程日志中心5健康检查Scanner对网关节点进行心跳检测和API状态检测及时发现异常节点和异常API
2-2、多维度告警
有了全面的监控体系自然少不了配套的告警机制主要的告警能力包括
告警类型触发时机1限流告警API请求达到限流规则阈值触发限流告警2请求失败告警鉴权失败、请求超时、后端服务异常等触发请求失败告警3组件异常告警自定义组件处理耗时长、失败率高告警4API异常告警API发布失败、API检查异常时触发API异常告警5健康检查失败告警API心跳检查失败、网关节点不通时触发健康检查失败告警
3、关键设计
3-1、异步外调 基于Netty实现异步外调主要有两种方式可以实现
方式一建立全局Map上线文传递不参与远程传输requestId响应时使用requestId进行映射上游信息方式二直接将上游信息包装成Context进行上线文传递不参与远程传输
方式一需要独立维护一个全局映射表同时需要考虑请求超时和丢失的情况否则会出现内存不断增长问题。
3-2、外调链接池化 使用Netty实现API网关外调微服务时因建立连接需要极度消耗资源所以需要考虑将外调的链接进行池化管理设计时需要注意以下几点
初始化适当连接过多过少都不适合考虑连接能随流量增减而进行自动扩缩容取出的连接需要检查是否可用连接需要考虑双向心跳探测
3-3、释放连接
http的链接是独占的所以在释放的时候要特别小心一定要等服务端响应完了才能释放还有就是链接关闭的处理也要小心总结如下几点 Connection:close 空闲超时关闭链接 读超时关闭链接 写超时关闭链接 FinReset 写超时writeAndFlush包含Netty的encode时间和从队列里把请求发出去即flush的时间。因此后端超时开始需要在真正flush成功后开始计时这样才最接近服务端超时时间还有网络往返时间和内核协议栈处理时间
3-4、对象池化设计
针对高并发系统频繁创建对象不仅有分配内存开销还对gc会造成压力。因此在实现时会对频繁使用的对象如线程池的任务taskStringBuffer等进行重写减少频繁的申请内存的开销。
3-5、上下文切换 整个网关没有涉及到IO操作但在IO编解码和业务逻辑都用了异步是有两个原因
防止开发写的代码有阻塞业务逻辑打日志可能会比较多
在突发的情况下但是我们在push线程时支持用Netty的IO线程替代这里做的工作比较少这里由异步修改为同步后通过修改配置调整CPU的上下文切换减少20%进而提高了整体的吞吐量就是不能为了异步而异步Zuul2的设计类似。
3-6、监控告警
协议层
攻击性请求。只发头不发/发部分body采样落盘还原现场并报警Line or Head or Body过大的请求。采样落盘还原现场并报警
应用层
耗时监控。有慢请求超时请求以及tp99tp999等QPS监控和报警带宽监控和报警。支持对请求和响应的行、头、body单独监控响应码监控。特别是400和404链接监控。对接入端的链接以及和后端服务的链接后端服务链接上待发送字节大小也都做了监控失败请求监控流量抖动报警。流量抖动要么是出了问题要么就是出问题的前兆
4、解决方案 4-1、Shepherd API网关 4-2、Mashape Kong
访问地址https://github.com/Kong/kong 4-3、Soul
访问地址https://github.com/Dromara/soul 4-4、Apiman
访问地址https://apiman.gitbooks.io/apiman-user-guide/user-guide/gateway/policies.html 4-5、Gravitee
访问地址https://docs.gravitee.io/apim_policies_latency.html 4-6、Tyk
访问地址https://tyk.io/docs
4-7、Traefik
访问地址https://traefik.cn
Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。 功能特性
它非常快无需安装其他依赖通过Go语言编写的单一可执行文件支持 Rest API多种后台支持Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, 并且还会更多后台监控, 可以监听后台变化进而自动化应用新的配置文件设置配置文件热更新。无需重启进程正常结束http连接后端断路器轮询rebalancer 负载均衡Rest Metrics支持最小化官方docker 镜像后台支持SSL前台支持SSL包括SNI清爽的AngularJS前端页面支持Websocket支持HTTP/2网络错误重试支持Let’s Encrypt (自动更新HTTPS证书)高可用集群模式
4-8、小豹API网关
访问地址http://www.xbgateway.com
小豹API网关企业级API网关统一解决认证、鉴权、安全、流量管控、缓存、服务路由协议转换、服务编排、熔断、灰度发布、监控报警等。