你每天都在用的表情包是如何发展至今的?
|
将极简贯彻到底 作为上述所有网络问题的替代方案,我们干脆都不要了。回到Borg式的端口分配,所有服务都在主机的网络命名空间中运行,并且必须请求分配端口。不是监听:80,而是监听:%port%,然后编排系统会用一个未使用的端口号来代替。例如,最终会变成监听主机上的:53928。 这样的设计真的非常非常简单。简单到基本没什么需要额外做的。在分配端口时,需要做一些烦人的检查,以避免端口冲突,这倒是一个令人头疼的问题。还有一个端口耗尽的问题,因为如果你的客户端非常活跃且数量不少,65000个端口其实并不算太多。但这个真的非常非常简洁。我个人崇尚简洁。 我们也可以采用经典的Docker方式,将其和上面的设计结合起来:容器在自己的网路命名空间中运行,使用一些临时的私有 IP。你可以使用任意的端口,但对其他Pod和外部可见的只有那些告知运行时要暴露的端口。而且你只能声明要暴露的容器端口,映射到主机上的端口是由容器运行时选择的。(这里也可以留一些后门来应对特例,你可以告诉系统你非要80端口不可,然后通过调度约束来起作用,调度到80端口没被占用的机器——类似于当前Kubernetes在这方面的处理。) 上面论述的关键点是,这些设计极大地简化了网络层。以至于我可以在短短几分钟内向别人解释清楚,确保他们能够了解其工作机制。 缺点是这把复杂性推给了服务发现。你不能使用“纯粹的DNS”作为发现机制,因为大多数DNS客户端不解析SRV记录,因此不会动态发现随机端口。 搞笑的是,服务网格的逐渐普及让这个问题不再是个问题。因为人们现在假设存在一个本地智能代理,它可以做任何服务发现能做的事情,并将其映射到一个网络视图上,而这个视图只被需要它的 Pod 看到。不过,我不太愿意接受这种做法,因为服务网格增加了太多的复杂性和维护成本,所以我不想采用它们……至少在有实践方案表明能使它们良好运行之前,我维持这样的观点。 所以,我们不妨做一些类似服务网格的东西,但更简单点。在源主机上做一些自动的IP端口转换……不过这看起来很像kube-proxy,这随之而来的就是复杂性和调试困难(这不是一个通过在不同的地方执行tcpdump就能解决的问题,因为流量会在不同的跳数之间变化)。 所以,这个方案也表明显式主机端口映射可能也算个解决方案,但仍存在很多隐藏的复杂性(我相信这就是为什么Kubernetes一开始就采用单Pod单IP的原因)。Borg通过强制规定解决了这种复杂性,它规定了应用都必须用自家设计的依赖库和框架。所以这里有个显而易见的缺点,不能随意更换的服务发现和负载平衡的实现框架。除非我们采用真正的服务网格,否则做不到这点。
本节描述的方案还有可改善之处,但我更倾向于上一节的实现。它的设计时要考虑的东西更多一些,但可以得到是一个可组合、可调试、可理解的系统,不需要无限制地增加功能以满足新需求。 很快,你可能就不再需要这么大的支持团队了。| 图源:阿灵顿研究公司Unsplash拍摄 为了跟上快速增长的机遇,公司既要改善其客户群的客户服务体验,又要能够预测和避免客户流失。 增强用户体验可以通过将多渠道通信(FacebookMessenger,Viber,WhatsApp,Telegram)封装在服务流中,通过SelfCare门户中的自助服务来自动化客户处理流程,部署带有会话AI的个人助理,拥有自然语言处理能力和集成RPA机器人,为用户执行前端和后端任务。
机器学习可以成功得到利用以完成摆在公司面前的大部分任务。对于每一个特定的案例,可以在不同的过程中选择、训练、测试和实现特定的算法组合。在其帮助下,企业可以提高客户保留能力,并以更经济的方式更快地扩大客户群。 (编辑:伊春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
