微服务治理系列一

微服务架构体系的全面治理:架构治理、研发治理、测试治理、运维治理、管理治理、业务治理 随着微服务架构的普及,如何确保微服务架构体系的稳定性和性能成为企业面临的重要技术问题。个人认为微服务的全面治理理应包括以下六大部分内容:架构治理、研发治理、测试治理、运维治理、管理治理、业务治理。通用全面的治理来帮助企业构建高效、可靠的微服务架构体系。 阅读详情
响应式编程
1 spring mvc与spring webflux
  • 两个框架都可以使用注解方式,都运行在 Tomet 等容器中;SpringMVC 采用命令式编程,Webflux 采用异步响应式编程
  • SpringMVC 方式实现,同步阻塞的方式,基于 SpringMVC+Servlet+Tomcat;SpringWebflux 方式实现,异步非阻塞 方式,基于 SpringWebflux+Reactor+Netty
2 响应式编程(Reactor 实现)
  • 响应式编程操作中,Reactor 是满足 Reactive 规范框架
  • Reactor 有两个核心类,Mono 和 Flux,这两个类实现接口 Publisher,提供丰富操作符。Flux 对象实现发布者,返回 N 个元素;Mono 实现发布者,返回 0 或者 1 个元素
  • Flux 和 Mono 都是数据流的发布者,使用 Flux 和 Mono 都可以发出三种数据信号:元素值,错误信号,完成信号,错误信号和完成信号都代表终止信号,终止信号用于告诉
  • 订阅者数据流结束了,错误信号终止数据流同时把错误信息传递给订阅者
3 SpringWebflux(基于注解编程模型)
  • 使用注解编程模型方式,和之前 SpringMVC 使用相似的,只需要把相关依赖配置到项目中,SpringBoot 自动配置相关运行容器,默认情况下使用 Netty 服务器
  • SpringWebflux 里面 DispatcherHandler,负责请求的处理
  • HandlerMapping:请求查询到处理的方法
  • HandlerAdapter:真正负责请求处理
  • HandlerResultHandler:响应结果处理
  • service:
//添加用户
@Override
public Mono<Void> saveUserInfo(Mono<User> userMono) {
    return userMono.doOnNext(person -> {
        //向map集合里面放值
        int id = users.size()+1;
        users.put(id,person);
    }).thenEmpty(Mono.empty());
}
  • controller
//添加
@PostMapping("/saveuser")
public Mono<Void> saveUser(@RequestBody User user) {
    Mono<User> userMono = Mono.just(user);
    return userService.saveUserInfo(userMono);
}
4 SpringWebflux(基于函数式编程模型)
  • 在使用函数式编程模型操作时候,需要自己初始化服务器
  • 基于函数式编程模型时候,有两个核心接口:RouterFunction(实现路由功能,请求转发给对应的 handler)和 HandlerFunction(处理请求生成响应的函数)。核心任务定义两个函数式接口的实现并且启动需要的服务器。
  • SpringWebflux请求和响应不再是ServletRequest 和 ServletResponse ,而是ServerRequest 和 ServerResponse
  • 创建服务
public void createReactorServer() {
    //路由和handler适配
    RouterFunction<ServerResponse> route = routingFunction();
    HttpHandler httpHandler = toHttpHandler(route);
    ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler);
    //创建服务器
    HttpServer httpServer = HttpServer.create();
    httpServer.handle(adapter).bindNow();
}
  • 映射路由
public RouterFunction<ServerResponse> routingFunction() {
    //创建hanler对象
    UserService userService = new UserServiceImpl();
    UserHandler handler = new UserHandler(userService);
    //设置路由
    return RouterFunctions.route(
            GET("/users/{id}").and(accept(APPLICATION_JSON)),handler::getUserById)
            .andRoute(GET("/users").and(accept(APPLICATION_JSON)),handler::getAllUsers);
}
  • 创建handler
public Mono<ServerResponse> getAllUsers(ServerRequest request) {
    //调用service得到结果
    Flux<User> users = this.userService.getAllUser();
    return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(users,User.class);
}
  • 业务service
public Flux<User> getAllUser() {
    return Flux.fromIterable(this.users.values());
}
网关gateway
1 核心核心概念
  • Route:是构建网关的基本模块,它是由ID、目标URL、一系列的断言和过滤器组成,如果断言为true则匹配改路由
  • Predicate:参考的是java8的java.util.function.Predicate,开发人员可以匹配http请求中的所有内容,如果请求与断言相匹配则进行路由
  • Filter:指spring框架中GatewayFilter实例,使用过滤器可以在请求被路由前或者之后对请求进行修改。自定义filter:全局过滤器需要实现GlobalFilter, Ordered,局部服务应用过滤器需要继承AbstractGatewayFilterFactory<CacheRequestFilter.Config>
2 动态路由服务
cloud:
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名称j进行路由
          #表示将请求路径的服务名配置改成小写 因为服务注册的时候,向注册中心注册时将服务名转成大写的了
           lower-case-service-id: true
3 lb负载均衡
routes:
# 认证中心
- id: ry-auth
    uri: lb://ry-auth #从注册中心获取服务,且以lb(load-balance)负载均衡方式转发
    predicates:
- Path=/auth/**
    filters:
      - CacheRequestFilter #gateway自定义filter
       - ValidateCodeFilter
       #截取路径的个数,请求/hello/HiController/aaa后端匹配到的请求路径,就会变成http://localhost:8762/HiController/aaa
       - StripPrefix=1
4 多过滤器形成chain,流不能多次读取
DataBufferFactory dataBufferFactory = exchange.getResponse().bufferFactory();
ServerHttpRequestDecorator decorator = new ServerHttpRequestDecorator(exchange.getRequest()) {
    @Override
    public Flux<DataBuffer> getBody() {
        if (bytes.length > 0) {
            return Flux.just(dataBufferFactory.wrap(bytes));
        }
        return Flux.empty();
    }
};
5 gateway与sentinel限流
  • 初始化限流过滤器
@Bean
 @Order(Ordered.HIGHEST_PRECEDENCE)
 public GlobalFilter sentinelGatewayFilter() {
     return new SentinelGatewayFilter();
 }
  • 配置初始化的限流参数
@PostConstruct
public void initGatewayRules(){
    Set<GatewayFlowRule> rules = new HashSet<>();
    rules.add(
         new GatewayFlowRule("provider_route") //路由名称,serviceid
                   .setCount(1)  //数量
                   .setIntervalSec(1) //每秒
     );
    GatewayRuleManager.loadRules(rules);
}
  • 降级兜底fallback
public class SentinelFallbackHandler implements WebExceptionHandler{
    private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange) {
        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "请求超过最大数,请稍候再试");
    }

    @Override
    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)    {
        if (exchange.getResponse().isCommitted()) {
            return Mono.error(ex);
        }
        if (!BlockException.isBlockException(ex)) {
            return Mono.error(ex);
        }
        return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange));
    }

    private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable) {
        return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable);
    }
}
断路器sentinel
1 sentinel与hystrix对比
  •         sentinel     hystrix
    
  • 隔离策略 信号量隔离 线程池/信号量隔离
  • 熔断降级 基于响应时间或失败比率 基于失败比率
  • 限流 基于qps、调用关系 不支持
  • 流量整形 支持慢启动、匀速器模式 不支持
  • 系统负载保护 支持 不支持
  • 实时指标 滑动窗口 滑动窗口rxjava
  • 控制台 支持 不支持
2 流量控制
  • 模式:直接、关联、链路;
  • 运行指标: QPS、线程池;
  • 控制的效果:直接限流、冷启动、排队。
2.1 模式
  • 关联:当关联的资源大道阈值时,就限流自己
  • 链路:多个请求调用同一个微服务
2.2 效果:
  • 直接:直接失败抛出异常;
  • 冷启动:默认的coldFactor为3,即请求qps从threshold/3开始,经过预热时长(dashboard设置)逐渐升至设定的qps阈值
    应用场景:秒杀系统在开启瞬间,会有很多流量上来,很有可能把系统打死,预热方式就是为了把系统保护起来,可慢慢
    的把流量放进来,慢慢的把阈值增长到设置的阈值
  • 匀速排队:让请求以均匀的速度通过,阈值类型必须设成qps,否则无效。如/test每秒1次请求,超过的话就排队等待,等待的超时时间为2000毫秒
3 熔断降级:
  • 当调用链路中某个资源出现不稳定,例如timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果
3.1 降级方式
  • Hystrix 通过线程池的方式,来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。
  • Sentinel 对这个问题采取了两种手段:
  • 通过并发线程数进行限制:和资源池隔离的方法不同,Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要您预先分配线程池的大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。
  • 通过响应时间对资源进行降级:除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。
  • sentinel没有半开状态
3.2 降级策略
  • RT(平均响应时间,秒级)
    平均响应时间 超出阈值 且 在时间窗口内通过的请求>=5,两个条件同时满足后触发降级
    窗口期过后关闭断路器
    RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX才能生效
  • 异常比列(秒级)
    QPS >= 5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
  • 异常数(分钟级)
    异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
3 热点key
  • 限流模式只支持QPS模式,固定写死了(这才叫热点)
  • @SentinelResource注解的方法参数索引,0代表第一个参数,1代表第二个参数,以此类推单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。如1秒的QPS为1,超过就限流,限流后调用blockHandler支持方法。
  • 热点参数必须是基本类型或者string
4 自定义异常
  @GetMapping("/rateLimit/customerBlockHandler")
    @SentinelResource(value = "customerBlockHandler", blockHandlerClass = CustomerBlockHandler.class, blockHandler = "handlerException2")
    public CommonResult customerBlockHandler() {
        return new CommonResult(200,"按客戶自定义",new Payment(2020L,"serial003"));
    }

public class CustomerBlockHandler {
    public static CommonResult handlerException(BlockException exception) {
        return new CommonResult(4444,"按客戶自定义,global handlerException----1");
    }
    public static CommonResult handlerException2(BlockException exception) {
        return new CommonResult(4444,"按客戶自定义,global handlerException----2");
    }
}
微服务(Microservices)[翻译] 微服务架构”一词在过去几年中如雨后春笋般涌现,用来描述将软件应用程序设计为可独立部署的服务套件的特定方式。虽然这种架构风格没有精确的定义,但围绕业务能力、自动化部署、端点智能以及语言和数据的分散控制,围绕组织存在某些共同特征。2014 年 3 月 25 日詹姆斯·刘易斯James Lewis 是 Thoughtworks 的首席顾问,也是技术咨询委员会的成员。James 对从小型协作服务构建应用程序的兴趣源于大规模集成企业系统的背景。他使用微服务构建了许多系统,并且多年来一直是不断发展的社区的积极参与者。 阅读详情

相关推荐

微服务Agent治理学习探索

Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能。在 JVM 启动的时候,可以通过 -javaagent:/path/to/agent.jar 的⽅式来加载 Java Agent。Java Agent 技术,能够在运⾏时动态修改 Java 字节码,动态的改变 Java 程序的⾏为,能够很。nt:/path/to/agent.jar ,从⽽实现不⽤修改镜像,就可以加载 Java Agent 了。

这个人很懒还没时间整理 2475

微服务之API网关:kong:使用场景之路由功能

API网关,在介绍spring cloud的时候我们也曾提到过zuul,并使用zuul做了一个简单的实验证明zuul是可以实现网关的路由功能的,在这篇文章中,我们会同样使用类似简单的例子来验证kong在此种场景下的使用。 场景说明 项目 说明 Api路由服务 kong 用户服务 用户相关的服务 组织服务 组织相关的服务 就像k...

知行合一 止于至善 2万+

基于云原生架构的后端微服务治理实战指南

从Day 1就设计治理体系,而不是上线后补救;统一注册发现与配置中心,保持服务动态可控;API网关前置,屏蔽内部细节,统一认证限流;服务通信必须具备熔断限流重试机制,保护系统稳定;监控与追踪全量覆盖,做到可观测、可追踪、可审计;容器化与弹性伸缩机制必不可少,应对瞬时流量波动;不断演练故障恢复,提升团队故障处理能力。在云原生时代,微服务架构是大势所趋。但如果没有一套完善的治理体系支撑,微服务不仅不能提高效率,反而会变成灾难制造机。治理不是一次性的项目,而是持续演进、不断优化的过程。

qq_20245171的博客 1286

Spring Cloud Alibaba教程 第三弹 Sentinel限流组件介绍

1、Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性 Sentinel 具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机

学无止境! 1097

【Halcon】双目立体视觉引导机械手有序抓取,案例分享

本文介绍了一个基于双目视觉的工件定位与抓取系统。该系统使用两个工业相机组成双目视觉系统,通过标定获取相机参数,采用模板匹配算法识别任意摆放且可能交叠的工件。重点阐述了三维坐标获取方法,特别是通过Z方向高度实现有序抓取的策略。文章详细说明了系统搭建、双目标定、模板创建等关键步骤,并展示了特征点匹配和定位结果。该案例为初学者和开发者提供了双目视觉系统的基本实现参考,展示了机器视觉与机械手协同工作的典型应用场景。

机器视觉从业者 2489

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

鸢尾_的博客 1744

Docker离线部署OpenWebUI操作步骤

docker离线部署openwebui

m0_49333265的博客 4347

为Spring Cloud Alibaba Sentinel编写通用的限流处理blockHandler和fallbackHandler

  Sentinel提供有效的限流和降级、异常处理功能,但是它的blockHandler和fallbackHandler要求非常严格,处理程序的形参数据类型及格式和返回数据类型必须一致才能生效,也就是说如果你的微服务提供10个api,并想每个api做限流,那么你必须要多写10个blockHandler!   不明白sentinel的作者为什么要如此处理,但是用起来绝对不方便,于是花了点时间写了个通用的处理模块。 如果将严格的形参和返回类型变成通用的单一数据类型返回,那么这个通用的处理就能实现,比如,如果通用

rocklee的专栏 1292

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)

100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)

努力让自己发光,对的人才能迎着光而来 13万+

Spring响应式编程之Reactor介绍

响应式编程(Reactive Programming)是一种面向数据流和变化传播的编程范式。Java中的Reactor是一个用于响应式编程的库,它建立在Reactive Streams规范之上,旨在帮助开发者构建非阻塞的、高效的、具有弹性的应用程序。

个人学习所用博客,记录日常学习的过程。 2121

【数字孪生工业应用实战】第2篇:数字孪生系统架构设计与技术选型——从“作秀”到“实干”的骨架构建

本文系统剖析了数字孪生系统从“作秀”到“实干”的架构设计关键。针对多数项目在POC转生产时因架构混乱、选型盲目而失败的问题,深入阐述了四层分层架构(感知层、传输层、模型层、应用层)的设计原则,重点解析了感知层的异构适配与边缘预处理、传输层的异步解耦与多模式通信等工程细节。结合OPC UA、MQTT、EdgeX Foundry等主流技术选型对比,以及汽车焊装车间边缘智能网关的实战代码,提供了从零搭建微型孪生系统的完整指导。旨在帮助工程师建立清晰的选型决策逻辑,构建稳定、可演进的数字孪生“骨架”。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 266

TSF微服务治理实战系列(一)——治理蓝图

随着对微服务架构的不断深入探索,越来越多的企业加入到了微服务架构中,体验微服务架构在开发、运维、测试等方面带来的优势。

qq_36668144的博客 1011

Xilinx系FPGA学习笔记(三)Vivado的仿真及ILA使用

接着学习vivado的使用方法。

贾saisai的博客 2546

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

腾云忆想技术干货|TSF微服务治理实战系列(一)——治理蓝图

通过深入TSF各项服务治理能力和落地场景,让读者朋友了解TSF服务治理的正确打开方式,实现构建完整的服务治理体系的目标,通过治理手段提高业务可用性,帮助企业降本增效。通过不同的管控粒度,平衡治理的成本和收益。...

tengyunyixiang的博客 440

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

微服务治理框架- - -Spring Cloud

提倡将单一应用程序划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制(如HTTP或Dubbo)互相协作,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具(如Maven)对其进行构建。这么多服务,服务之间如何通信?HTTP还是RPC?服务很多,客户端怎么访问,如何提供对外网关?这么多服务,如何治理?..

退役复学在校大学生,目光所至,皆为华夏 4万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【分布式微服务云原生】《微服务架构下的服务治理探秘》

本文深入探索微服务架构下的服务治理,涵盖了 AKF 服务拆分原则、微服务改造中的反腐层、挎斗模式以及 APM(应用性能管理)的详细介绍。读者将了解这些关键概念的定义、作用、实现方式及注意事项,为构建高效、稳定的微服务系统提供有力的理论支持和实践指导。

Dylaniou的博客 1578

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为云PaaS平台微服务治理7微服务治理

7微服务治理 7.1微服务治理介绍 7.1.1什么是微服务治理 微服务开发上线后由于数量众多,并且微服务之间调用关系复杂,需要对微服务进行统一治理,微服务治理提供了 熔断、容错、限流、降级等高级服务治理能力,最大限度保障服务的可用性。 7.1.2云平台如何微服务治理 在学习ServiceComb时采用微服务治理都需要我们在配置文件中配置治理策略,而采用云平台的方式进行微服务治理只需要在微服务中...

kai46385076的专栏 2076

微服务治理详解

—大意:简而言之,微服务体系结构风格是一种将单个应用程序开发为一套小型服务的方法,每个服务运行在自己的进程中,并与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。对这些服务的集中管理是最低限度的,这些服务可能用不同的编程语言编写,并使用不同的数据存储技术。

努力分享一些干货 1705

微服务治理方案之Dubbo+zookeeper

Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示,服务提供者(Provider)启动后,会将自身的服务注册到注册中心(zookeeper)中,包括服务地址、版本号等信息。服务消费者(Consumer)想zookeeper中订阅所需服务。注册中心(zookeeper)会监视服务提供者,服务提供者出现变更或故障时,就会通知消费者。微服务编程范式和工具Dubbo 支持基于 IDL 或语言特定方式的服务定义,提供多种形式的服务调用形式(如同步、异步、流式等)

zhzjn的博客 1610

微服务(Microservices)。

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

孤芳不自赏 3388

微服务架构-正向治理与治理效果

为了解决微服务改造后带来的一系列问题,我们需要通过正向治理相应的治理手段。正向治理只要围绕效率、稳定性和效果方面的治理工作展开讨论。微服务架构的初衷主要是建立一个方便快速迭代和演进的架构,帮助业务实现方案快速落地和试错,因此在微服务研发流程上,需要重点关注两个事情:如何支撑业务特性快速落地,如何建立业务效果的闭环反馈机制。在治理效果方面,我们主要从服务的配置化和效果评估体系两个方面来说明

qq_25409421的博客 1148

微服务服务治理

微服务学习笔记

m0_62434717的博客 8451

微服务治理解密:EDAS 是什么?

本文是《微服务治理解密》系列篇的第一篇文章,为大家介绍 EDAS 是什么。该系列文章基于阿里云商业化产品 EDAS『产品官网 >>』 的微服务实践,如果你的团队具备较强的微服务治理能力,那么希望我们在微服务治理方面的实践和背后的思考,可以为你提供一些参考。 EDAS 是什么 有很多读者问我在阿里是做什么的,我一般会回答:“我在阿里主要负责 Dubbo、HSF、SpringCl...

数据库技术 6838
上一篇: Spark ML处理样本类别不均衡问题
下一篇: 微服务治理系列二
架构师老狼
博客等级 码龄14年 44粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值