【服务治理】服务治理漫谈

本文探讨了服务治理的定义、发展历程,包括Server Proxy、Smart Client和Local Proxy阶段,以及服务治理的核心要素:流量正向打通和逆向反馈。随着微服务的兴起,Service Mesh如Istio成为新的趋势,但同时也面临性能和组织边界的挑战。文章强调了服务治理应结合组织、业务和系统现状,提出可运营、高可用和高性能的技术原则,以及标准化和自动化的方向。
摘要由CSDN通过智能技术生成

【服务治理】服务治理漫谈

0. 前言

本文是服务治理领域专题的第一篇,并不希望也无法大包大揽将所有的点都覆盖到,更意在从一些更贴近我们实际工作的角度来进行更抽象层次的剖析,更多分享的是我认为重要或者有意思的一些方法论和逻辑推演过程。这能给我们后续无论是业务应用还是基础技术领域的服务治理提供一些参考。

1. 什么是服务治理

在一切的最开始,我们先来问自己一个问题,什么叫做服务治理?网上有很多关于服务治理的定义,维基百科也有着对应的定义。林林总总,有宏观的也有细节的。而在本文中,我尝试为其进行另一个维度上的简单定义:

服务治理,即以组织、业务和系统三者为核心要素建立连接,在此基础上实现服务系统的正向打通和逆向反馈。

1.1 三要素

  • 组织
    组织即人。服务不可能独自存在,我们在进行治理的过程中,往往过度重视面向业务的用户体验,而会忽视掉在这个技术生态上另外一个非常重要的服务对象—技术人员。大家往往更专注于如何设计出一个高性能高可扩展的系统,而冷落了技术人员在这之中的诉求。一个良好的服务治理的判断标准,即要在服务好普通用户的同时,也需要让在这生态之上的技术同学得到归属感。
  • 业务
    业务即产品。毋庸置疑,技术是为业务服务的。空谈技术本身没有意义。所以我们需要保持对业务敏锐的洞察力和前瞻意识,这样才能设计出一个演化式的合理服务架构。比如业务流量很低且还处于快速试错阶段,而你却上了一整套的高并发的解决方案,这就本末倒置了。大部分技术同学天然会有“秀技术肌肉”的冲动,这是正常的,但作为架构师,需要合理控制组织的欲望,结合业务实际进行处理,才能达到一个良好的服务治理的状态。
  • 系统
    系统层面上,也即我们最常谈及服务治理时候会关注的点。如何做一个可靠、高性能、自动化、可扩展且能够快速迭代的系统出来响应业务的需求呢?良好的服务治理要求我们能够结合组织和业务实际,进行系统层面的控制。这样也是下列章节中会重点提及的内容。

在这里插入图片描述

如上图所示,三要素之间会相互影响,良好的服务治理能够让三者相互促进优化迭代,不合理的服务治理将导致三者相互拉扯、冲突,乃至降低士气和效率并影响最后的公司产出。所以服务治理,从来就不单纯只是系统、技术的问题,也涵盖着人和事情的要素。

1.2 系统层面的正向打通和逆向反馈

在系统层面的服务治理的范畴,相关的介绍有很多,比如业内享有盛誉的阿里开源框架 Dubbo(目前已入 Apache)中的相关图表的呈现:

在这里插入图片描述

可以看出在一个复杂的网络拓扑场景中,我们需要对这个服务网进行各种各样的治理,来确保这个网在技术层面能够尽可能地维持健康和有效。但如何去归纳我们到底需要什么样的服务治理呢?如下图所示:

在这里插入图片描述

在系统层面,我们认为:

服务治理其实是由流量的正向打通和逆向反馈所构成的一个环

正向打通,即如何将流量打通,这也是对于一个服务本身最基本的要求。我们于是需要思考:

  1. 如何做跨服务通讯,Rest 还是 Rpc ?序列化用 json 还是 pb ?能支持什么协议?是否支持多协议转换?
  2. 如何做服务注册/发现,用 Eureka、Zookeeper、etcd、Consul、Nacos?
  3. 如何做负载均衡,用软负载,还是硬负载?负载算法用 RR、Random、一致性哈希?
  4. 如何做路由筛选,捞一百个,还是 IDC 优先,还是类似 Envoy 这样的防恐慌机制或者干脆来个类似 Dubbo 的脚本花活?
  5. 如何做授权鉴权,是否需要 TLS,是否需要黑白名单,是否要验签,用什么加密算法,机器如何互信?
    ……

逆向反馈,则是代表我们如何基于各种基于流量进来后观察到的数据,来进行系统性地决策(一般是负反馈)我们的服务网需要做哪些事情才能让整张网持续处于健康状态。于是,我们思考,

  1. 如何扛住流量洪峰,削峰、限流?怎么限流?信号量、令牌桶、漏桶、固定窗口计数、滑动窗口计数、线程隔离?
  2. 如何正确处理异常,及时熔断?一键降级?级联决策关闭入口?
  3. 如何让系统可观察,监控、报警、分布式链路追踪?选择 Cat、Zabbix、Falcon、Prometheus、Zipkin、Skywalking?
  4. 如何提升资源效率,采用容器,Kvm?Docker?Swarm?K8s?Mesos?Openstack?
  5. 如何定义一个服务的健康度,SLA?RTO?RPO?健康度量模型?
    ……

2. 服务治理的发展史

我们都知道,服务的发展是由单块应用,服务水平分层,服务纵向切割,乃至后续微服务思想的兴起,**“两个星期”重构法则和“两张披萨”**团队等眼花缭乱的服务拆分方法论充塞你的耳目。这都是些常见的论调,但不是本章节阐述的重点。本章节更关注的是服务治理发展拆分过程中,所必然要面对的一个核心问题—“服务拆分后,之间如何产生联系?”也即:

如何形成复杂服务节点的网络?

限于篇幅,我们来简单回顾下针对该问题的几个重要思潮。

2.1 Server Proxy

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java安全漫谈是一本关于Java安全的书籍,深入探讨了Java应用程序在网络环境中的安全性和相关的安全漏洞。该书内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理、Java安全开发等方面的知识。 首先,Java安全基础部分介绍了Java安全模型的原理和特点,包括Java类库的安全特性、权限管理和访问控制、安全策略配置等。这部分内容可帮助开发人员了解Java应用程序的安全需求,并提供相应的解决方案。 其次,Java虚拟机的安全机制是Java应用程序的基石。该书介绍了Java虚拟机的安全沙箱和类加载机制,并讨论了如何利用这些安全机制避免恶意代码的执行和隐患的防范。 此外,Java安全管理部分从用户角度出发,介绍了Java应用程序的安全管理工具和技术,如Java安全策略文件、权限管理和安全认证等。开发人员可以通过合理配置和使用这些工具来提高Java应用程序的安全性。 最后,该书还涉及了Java安全开发过程中的一些最佳实践和常见安全漏洞,如输入验证、跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。通过学习和掌握这些知识,开发人员可以编写出更加安全的Java应用程序。 总而言之,Java安全漫谈是一本全面讨论Java安全的书籍,内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理和Java安全开发等方面的知识。它对于开发人员和安全从业人员来说,都是一本重要的参考书,有助于提高Java应用程序的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值