mesh的简单理解

  • 在K8S里一个Pod是一个调度单位,原先Pod里只有业务容器,现在新增了一个sidecar代理容器,跟业务容器共享network namespaces,它通过iptables拦截客户端流量,实现监控采集、解密、鉴权、限流等通用功能。
  • dapr 中间件下沉的能力。
  • 对于istio的理解(点击链接是自己一个分享的ppt)。

 mosn网络模型的分析和压测 (点击链接是自己一个分享的ppt)

  • 在端上,也就是数据平面最核心的就是代理流量。流量代理转发的逻辑参考mosn,采用golang经典的netpoll模型,底层调用的是linux epoll,最大的特点是多路复用,一个线程可以 循环非堵塞 的轮训多个lfd或者cfd,获取到事件发生的fd会占用线程处理,而不是一个fd占用一个线程的堵塞IO形式。
  • mosn采用的golang在epoll上进行封装,在循环非堵塞的轮训获取到有事件发生的fd后,是唤醒堵塞在此fd上的协程处理,所以他是一个协程一个连接的模式,而协程的消耗是远远小于线程的,在非大量连接数的情况下,CPU和内存消耗并不高,同步堵塞的过程易于理解和排查问题。但是如果是十万级百万级的ingress网关场景,则需要采用原生netpoll,在循环非堵塞的轮训获取到有事件发生的fd后,是直接从协程池里协程处理。
  • envoy 是一个cpu对应一个epoll的线程,lfd会注册到所有epoll中,有lfd有事件发生,内核负载均衡选择一个epoll进行处理,accept之后的cfd也注册到当前线程,适合大量短连接的场景所以可以做网关,但是mosn不太合适。

(netty 是一个boss线程去监听lfd的时间,accept之后拿到cfd让work线程去处理)

延伸:epoll_ctl 注册要监听的fd文件句柄,内核将其挂到红黑树上,当有对应的事件就绪,会从红黑树上找出对应的lfd和cfd放入就绪对队列,上层epoll_wait轮训就可以取出有时间发生的fd。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值