Istio控制平面组件原理解析
Istio控制平面组件原理解析 朱经惠 2018.08.25 Service Mesh Meetup #3 深圳站关于我 • 朱经惠,ETC车宝平台工程师。 • 喜欢开源,个人开源项目”Jaeger PHP Client”。 • 喜欢研究源码,对NSQ,Jaeger,Istio(控制平面)等go语言开源项目进行 过研究。 • 除了代码还喜欢爬山和第二天睡醒后全身酸疼的感觉。目录Pil uv1版本和v2版本之间的区别 u建立缓存配置 u触发配置生效方式v1版本和v2版本之间的区别 V1 HTTP1 REST JSON/YAML 弱类型 轮询 SDS/CDS/RDS/LDS 奠定控制平面基础 V2 HTTP2 GRPC Proto3 强类型 Push SDS/CDS/RDS/LDS/HDS/ADS/KDS 和Google强强联手 官方博客:The universal data0 码力 | 30 页 | 9.28 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘 奕杉Agenda Ø背景 Ø构架 Ø能力 Ø性能 ØRoadMap背景为什么蚂蚁需要ServiceMesh Ø拥抱微服务,云原生 • SOFA 5规划落地 • 兼容K8S的智能调度体系 Ø运维体系的有力支撑 • LDC • 弹性伸缩 • 蓝绿/容灾/.. Ø金融级网络安全 • 金融级鉴权体系 • 云原生zero trust网络安全趋势0 码力 | 44 页 | 4.51 MB | 5 月前3Mybatis 框架课程第二天
传智播客——专注于 Java、.Net 和 Php、网页平面设计工程师的培训 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 Mybatis 框架课程第二天 第1章 回顾 1.1 自定义流程再分析 传智播客——专注于 Java、.Net 和 Php、网页平面设计工程师的培训 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 细节: resultType 属性: 用于指定结果集的类型。 parameterType 属性: 传智播客——专注于 Java、.Net 和 Php、网页平面设计工程师的培训 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 用于指定传入参数的类型。 sql 语句中使用#{}字符: 它代表占位符,相当于原来 Dao 的代理对象 userDao = session.getMapper(IUserDao.class); } 传智播客——专注于 Java、.Net 和 Php、网页平面设计工程师的培训 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 @After//在测试方法执行完成之后执行 public void destroy()0 码力 | 27 页 | 1.21 MB | 1 年前3陌陌Service Mesh架构实践
现阶段的关键需求 技术储备与原则类因素 自研数据平面与 控制平面方案 使存量服务接入Mesh 方案 对接大量内部系统 关键收益均由数据平面产生 非完善的控制平面功能 技术体系内不引入Go语言 最成熟的服务端语言为Java 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot Proxy • 向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 容器化运行方式 • sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg / recvmsg接口发送FD • 步骤:listener、存量连接、存量数据 Java实现 • 借助JNI与Netty Java实现FD迁移18/24 数据平面升级方式 – 发布流程 容器化发布方式0 码力 | 25 页 | 1.25 MB | 5 月前3机器学习课程-温州大学-09机器学习-支持向量机
习 ( supervised learning)方式对数据进行二元分类的广义线性 分类器(generalized linear classifier),其决 策边界是对学习样本求解的最大边距超平面( maximum-margin hyperplane) 。 与逻辑回归和神经网络相比,支持向量机,在学 习复杂的非线性方程时提供了一种更为清晰,更 加强大的方式。 支持向量 距离 5 ,用这些点找出一个平面(称为决 策面),使得支持向量到该平面的 距离最大。 距离 7 1.支持向量机概述 背景知识 任意超平面可以用下面这个线性方程来描述: ?T? + ? = 0 二维空间点 (?, ?)到直线 ?? + ?? + ? = 0的距离公式是: |?? + ?? + ?| ?2 + ?2 扩展到 ? 维空间后,点 ? = (?1, ?2 … ??) 到超平面 ?T? 向量到超平面的距离为 ?,其他点到超平面的距 离大于 ?。每个支持向量到超平面的距离可以写 为:? = |?T?+?| ||?|| 8 1.支持向量机概述 背景知识 ?T? + ? = 0 ?T? + ? = 1 ?T? + ? = −1 ? = |?T? + ?| ||?|| 如图所示,根据支持向量的定义我们知道,支持向量到超平 面的距离为 ?,其他点到超平面的距离大于0 码力 | 29 页 | 1.51 MB | 1 年前3大规模微服务架构下的Service Mesh探索之路
如何让社区和客户认可我们的产品?开源方案选择之第一代Service Mesh Linkerd • 无控制平面 • Scala编写,基于JVM资源消耗大 • 可扩展性有限,dtab不易理解和使用 • 功能不能满足蚂蚁的需求,没法做到 类似envoy xds那样的扩展性 • 未来发展前景黯淡 Envoy • 安心做数据平面, 提供XDS API • 设计优秀,性能和稳定性表现良好 • C++编写,和蚂蚁的技术栈差异大 蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 • 公司和产品在社区知名度和影响力有限国内公司的选择之一:自研 华为:CES Mesher • 使用Golang编写 • 由go chassis演进而来 • 走的是已有类库->加proxy->再加 控制平面的路线 • 部分对接Istio • 细节暂时不清楚,即将开源 新浪微博:Motan Mesh • 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第0 码力 | 37 页 | 7.99 MB | 5 月前3做一个有趣的多人 AR 游戏 - 刘冠杉
操作简单直观 • 设备不要剧烈晃动,不要快速移动 看别人的游戏和Apps • 内容/功能简短 • 操作简单直观 • 设备不要剧烈晃动,不要快速移动 • AR Off Mode 平面识别 Plane Detection 配置AR Session let config = ARWorldTrackingConfiguration() if #available(iOS 11 @property (nonatomic, strong, readonly) ARPlaneGeometry *geometry API_AVAILABLE(ios(11.3)); @end 显示平面 func renderer( _ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) chor: planeAnchor) DispatchQueue.main.async { node.addChildNode(planeNode) } } 显示平面 func createPlaneNode(for planeAnchor: ARPlaneAnchor, color: UIColor = UIColor.yellow.withAlphaComponent(00 码力 | 71 页 | 6.93 MB | 1 年前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
收集产品化增强-支持多网络平面 电信系统一般会有多个网络平面的,主要原因包括:避免不同功能的网络之间的 相互影响; 网络设计冗余,增强系统网络的健壮性; 为不同的网络提供不同的 SLA ;通过网络隔离提高安全性;通过叠加多个网络增加系统带宽 上图中的Kubernets集群使用了Knitter网络插件,部署了四个网络平面产品化增强-支持多网络平面 Istio1.0中不支持多网络平面,当服务地址和Env Node This is an outbound request, it should be send out to 10.75.8.101产品化增强-支持多网络平面 我们对Istio的代码进行了改造,增加了多网络平面支持。 Pilot Service Registry Envoy Service A Register service (IP :10.75.8.101) 10.75 • 在Istio中集成Kafka调用跟踪上游开源社区参与情况 所有通用的故障修复、性能优化和新特性都提交PR合入了上游社区。包括: • Consul Registry性能和资源占用优化 • 多网络平面支持 在产品化过程中对Istio的改进会持续向社区进行贡献!Service Mesh中文社区 https://www.servicemesher.com 个人博客 https://zhaohuabing0 码力 | 27 页 | 11.99 MB | 5 月前3ffmpeg翻译文档
视频编码器 - 132 - 本文档使用 书栈(BookStack.CN) 构建 1. 自动方差AQ (实验). aq-strength (aq-strength) 设置AQ强度,减少阻塞平面和纹理区域模糊。 psy 为1表示使用视觉优化。为0则禁用(等效 x264的 --no-psy ) psy-rd (psy-rd) 在psy-rd:psy-trellis中设置视觉优化强度 启用16x16块和16x16块半像素细化进行菱形区域搜索, ‘x1’和‘log’是‘phods’别名 ‘epzs’ 1. 允许前述所有值,再加上8x8菱形区域搜索,8x8半像素细化,并在色度平面进行运动估计 ‘full’ 1. 允许所有的 16x16和8x8 区域搜索 mbd 17 视频编码器 - 139 - 本文档使用 书栈(BookStack.CN) 构建 设置宏块选择算法,依质量提高的可能值: 重写4字节的供应商ID。例如apl0这个自定义供应商ID会被认为是由苹果编码器产生。 alpha_bits integer 指定alpha分量的比特数。可能的值是0,8和16。用0禁用alpha平面编码 在默认操作模式下,编码器以高质量为目的(即在不产生超过要求的帧数据限定下,使输出质量尽可 能好)。这种情况下帧内很多小的细节是很难压缩的,编码器将花更多的时间为每个片寻找合适的量 化。0 码力 | 502 页 | 3.06 MB | 1 年前3SOFAMesh的通用协议扩展
问答SOFA MESH • 从 ISTIO 克隆并保持同步更新 • 使用 SOFA-MOSN 代替 ENVOY 作为数据平面 • 打包 • 安装 • 部署 • 测试 • 支持主流的微服务框架 • SOFA • HSF • DUBBO • SPRING CLOUD • … • 控制平面创新的地方 • MESH OPERATOR • RPC SERVICE CONTROLLER • …SERVICE 在非 KUBERNETES 环境部署 ISTIO 把 KUBERNETES 当作一个更好用的虚拟化方案 KUBERNETES NATIVE 化微服务 PLATFORM ADAPTER 自己做控制平面KUBERNETES NATIVE 微服务 • 使用 Kubernetes 作为注册中心 • Service • Endpoint • Pod • 使用 DNS 寻址 • 使用 iptables/ebpf ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND OUTBOUNDSOFA 服务注册模型落地一个微服务框架需要的工作 • 部署 ZK 集群作为 RPC 框架的注册中心 • 开发 ZK Platform Adapter0 码力 | 28 页 | 4.73 MB | 5 月前3
共 311 条
- 1
- 2
- 3
- 4
- 5
- 6
- 32