Service Mesh微服务熔断、限流的骚操作

在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断、限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一。

那么什么是熔断限流?在传统Spring Cloud微服务、以及新一代Service Mesh微服务架构中,它们分别又是怎么实现的?本文将对此进行阐述!

服务熔断、限流概述

先理解下熔断、限流的基本概念以及它们的应用场景。说起熔断这个词,大家印象深刻的可能是股市交易熔断、或者电路保险丝断开这样的场景;而微服务中的熔断本质上和这些场景中所描述的理念是一致的。都是为了在极端情况下,保证系统正常运行而设计的一种自我保护机制。

熔断的基本逻辑就是隔离故障。在微服务架构盛行的今天,服务之间的调用链路相比单体应用时代变得更长了,服务化拆分带来系统整体能力提升的同时,也增加了服务级联故障出现的概率。例如调用链路“A->B->C->D”,如果服务D出现问题,那么链路上的A、B、C都可能会出现问题,这一点也很好理解,因为出现故障的服务D,必然会在某个时间段内阻塞C->D的调用请求,并最终蔓延至整个链路。而服务连接资源又是有限的,这种增加的调用耗时,会逐步消耗掉整个链路中所有服务的可用线程资源,从而成为压垮整个微服务体系的幕后黑手。

而为了防止故障范围的扩大,就需要对故障服务D进行隔离,隔离的方式就是服务C在感知到对D的调用频繁出现故障(超时或错误)后,主动断掉对D的连接,直接返回失败调用结果。以此类推,如果微服务中的所有链路都设置这样的熔断机制,那么就能逐级实现链路的分级保护效果。

熔断机制虽然解决不了故障,但却能在故障发生时尽量保全非故障链路上的服务接口能被正常访问,从而将故障范围控制在局部。当然被熔断的服务也不会一直处于熔断状态,在熔断机制的设计中还要考虑故障恢复处理机制。

说完熔断,再来说说限流。熔断的主要目的是隔离故障,而引起故障的原因除了系统本身的问题外,还有一种可能就是请求量达到了系统处理能力的极限,后续新进入的请求会持续加重服务负载,最终导致资源耗尽,从而引起系统级联故障、导致雪崩。而限流的目的就是拒绝多余流量、保证服务整体负载始终处于合理水平。

从限流范围上看,微服务体系中的每个服务都可以根据自身情况设置合理的限流规则,例如调用链路“A->B->C->D”,B服务的承受力是1000QPS,如果超过该阀值,那么超出的请求就会被拒绝,但这也容易引起A对B的熔断,所以对于微服务设置限流规则的设置最好还是根据压测结果确定。

在实际场景中,对单个节点的微服务分别设置限流,虽然从逻辑上没啥毛病,但实际操作起来却并不容易,这主要是因为限流规则分散不好统一控制,另外对于单节点阀值的评估,在全链路环境下并不能得出“1+1=2”的结果。所以,一般做法是根据全链路压测结果,在服务网关统一进行集群级别的限流处理。

接下来将分别介绍在Spring Cloud传统微服务体系,以及新一代Service Mesh微服务体系中,熔断、限流的基本实现原理,并重点演示基于Istio的微服务熔断、限流逻辑具体实践!

Spring Cloud微服务对熔断/限流的处理

说起Spring Cloud微服务中的熔断、限流,最先想到的肯定是Hystrix、Sentinel这样的技术组件。关于这两种著名的熔断、限流组件,在笔者早先的文章<<Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?>>以及<<Spring Cloud微服务Sentinel+Apollo限流、熔断实战>>中都曾详细介绍过,细节就不再赘述,感兴趣的朋友可以翻阅下。这里只从微服务架构的宏观视角,来对比分析下其与服务网格(Service Mesh)在架构上的区别。

从本质上说Hystrix与Sentinel并无实质差别,它们都是以SDK的形式附着在具体微服务进程之上的、实现了熔断/限流功能的本地工具包。具体示意图如下:

在Spring Cloud微服务中,Hystrix、Sentinel等熔断、限流组件通过嵌入微服务进程,统计微服务一段时期内的入口流量及依赖服务的错误调用次数、并根据组件的所提供功能及规则配置,来决定是否触发限流或熔断降级逻辑。这样的过程完全是附着在微服务进程本身完成的,虽然限流/熔断组件本身也提供了线程池隔离之类资源隔离手段,但从服务治理的角度来看,这样的方式显然还是侵入了业务、占用了业务系统资源;并且分散于应用的规则配置,也不利于微服务体系的整体管控。

Service Mesh微服务熔断/限流实现

前面简单概述了Spring Cloud微服务体系中实现熔断、限流机制的基本框架及存在的弊端。接下来将具体分析下同样的逻辑在Service Mesh微服务架构中是如何实现的?

关于Service Mesh微服务架构如果你还比较陌生,可以先通过笔者之前的文章<<干货|如何步入Service Mesh微服务架构时代>><<实战|Service Mesh微服务架构实现服务间gRPC通信>>进行了解,这两篇文章从概念到实践详细介绍了基于Istio的Service Mesh微服务架构的具体玩法。本文所依赖的操作环境及示例代码均依赖于该文章所演示的案例。

而回到本文的主题,要了解Service Mesh微服务架构中熔断、限流的实现机制,还是需要从整体上理解服务网格实现的基本架构,具体如下图所示:


如上图所示,Service Mesh架构总体上由控制面(Control Plane)、数据面(Data Plane)这两部分组成。其中控制面主要承担整个微服务体系治理信息的集中管控;而数据面则负责具体执行由控制面下发的各类服务治理信息及规则。例如服务节点信息的发现、以及本文所讲述的熔断、限流规则等都是通过控制面统一下发至各数据面节点的。

数据面就是一个个代理服务,在Service Mesh体系下每个具体的微服务实例都会自动创建一个与之对应的代理,这个代理服务就是我们俗称的边车(SideCar)。这些代理会主动劫持所代理的微服务实例的入口流量出口流量,从而根据控制面下发的服务治理信息实现路由发现、负载均衡、熔断、限流等系列逻辑。

从中可以看出,在Service Mesh微服务架构中,各个具体的微服务之间不再直接发生连接,而是转由各自的SideCar代理实现,因此在应用形态上就形成了一组由代理所组成的网状交互结构,这就是服务网格名称的由来。具体如下图所示:

将微服务治理逻辑从原先具体的微服务进程中抽离出来,并实现由统一控制面管理、代理数据面执行的体系结构,这就是Service Mesh微服务体系与Spring Cloud传统微服务体系在架构上最大的区别。

本文所提到的熔断、限流逻辑,也是在这样的架构模式下实现的。而控制面与数据面之间的具体通信则是通过一组被称为xDS协议的数据交互方式实现。xDS协议的核心是定义了一套可扩展的通用微服务控制API,这些API不仅可以做到服务发现、还可以做到路由发现,可以说Service Mesh微服务体系中所有与服务治理相关的配置都可以通过xDS所提供的发现方式来实现,控制面与数据面之间正是通过这种全新的方案实现了各类数据的获取、及动态资源的变更

而具体来说xDS包含LDS(监听发现服务)、CDS(集群发现服务)、EDS(节点发现服务)、SDS(密钥发现服务)和RDS(路由发现服务)。xDS中的每种类型都会对应一个发现资源,而本文所要讲述的熔断、限流逻辑则是由RDS(路由发现服务)实现。由于篇幅的关系,就不展开讲了,感兴趣的读者可以看看官方文档,大家对此有个印象即可!

Istio服务网格熔断、限流实践

前面从整体架构的角度简单分析了Service Mesh微服务治理体系的基本原理,接下来将基于Istio并结合微服务实战案例,从实践角度具体演示如何实现微服务之间的熔断、限流配置。以下操作假设你已经在Kubernetes集群安装了Istio,并正常部署了<<干货|如何步入Service Mesh微服务架构时代>><<实战|Service Mesh微服务架构实现服务间gRPC通信>>所演示的微服务案例。

Istio无需对代码进行任何更改就可以为应用增加熔断和限流功能。Istio中熔断和限流在DestinationRule的CRD资源的TrafficPolicy中设置,通过设置连接池(connectionPool)实现限流、设置异常检测(outlierDetection)实现熔断。

限流逻辑演示

在Istio中,微服务的限流主要是通过设置connectionPool参数实现。该参数可以对上游服务的并发连接数和请求数进行限制(适用于TCP和HTTP),从而实现限流功能。例如要在API服务层实现限流,链路示意图如下:


在Istio中实现此类限流逻辑,步骤如下:

1)、创建统一管理路由规则的配置文件(destination-rule-all.yaml),如:

---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: micro-api
spec:host: micro-apitrafficPolicy:connectionPool:tcp:maxConnections: 1http:http1MaxPendingRequests: 1maxRequestsPerConnection: 1
---

上述规则文件定义了针对mico-api服务的限流规则,其中maxConnections(最大连接数为1)、http1MaxPendingRequests(最大等待请求数为1),如果连接和并发请求数超过1个,那么该服务就会触发限流规则。

创建规则资源,命令如下:

$ kubectl apply -f destination-rule-all.yaml 
destinationrule.networking.istio.io/micro-api unchanged

规则创建完后可以通过命令查看规则,命令如下:

$ kubectl get destinationrule micro-api -o yaml
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:...
spec:host: micro-apitrafficPolicy:connectionPool:http:http1MaxPendingRequests: 1maxRequestsPerConnection: 1tcp:maxConnections: 1可以看到,规则资源已经成功创建!

2)、部署压测工具,验证限流效果

接下来,通过部署Istio提供的压测工具fortio,模拟调用微服务并触发限流规则。部署fortio命令如下:

$ kubectl apply -f samples/httpbin/sample-client/fortio-deploy.yaml

找到Istio安装目录“samples/httpbin/sample-client”后执行上述部署命令。

接下来通过fortio工具模拟压测mico-api服务接口,命令如下:

#将fortio服务pod信息写入系统变量
$ export FORTIO_POD=$(kubectl get pods -lapp=fortio -o 'jsonpath={.items[0].metadata.name}')#通过设置2个线程,并发调用20次进行压测
$ kubectl exec "$FORTIO_POD" -c fortio -- /usr/bin/fortio load -c 2 -qps 0 -n 20 -loglevel Warning -H "Content-Type:application/json" -payload '{"businessId": "51210428001784966", "amount":100, "channel":1}' http://10.211.55.12:31107/api/order/create 

压测数据效果如下:

11:18:54 I logger.go:127> Log level is now 3 Warning (was 2 Info)
Fortio 1.11.3 running at 0 queries per second, 2->2 procs, for 20 calls: http://10.211.55.12:31107/api/order/create
Starting at max qps with 2 thread(s) [gomax 2] for exactly 20 calls (10 per thread + 0)
11:18:54 W http_client.go:693> Parsed non ok code 503 (HTTP/1.1 503)
11:18:54 W http_client.go:693> Parsed non ok code 503 (HTTP/1.1 503)
11:18:54 W http_client.go:693> Parsed non ok code 503 (HTTP/1.1 503)
11:18:54 W http_client.go:693> Parsed non ok code 503 (HTTP/1.1 503)
Ended after 262.382465ms : 20 calls. qps=76.225
Aggregated Function Time : count 20 avg 0.025349997 +/- 0.01454 min 0.001397264 max 0.049622545 sum 0.506999934
# range, mid point, percentile, count
>= 0.00139726 <= 0.002 , 0.00169863 , 15.00, 3
> 0.003 <= 0.004 , 0.0035 , 20.00, 1
> 0.016 <= 0.018 , 0.017 , 25.00, 1
> 0.018 <= 0.02 , 0.019 , 30.00, 1
> 0.02 <= 0.025 , 0.0225 , 50.00, 4
> 0.025 <= 0.03 , 0.0275 , 65.00, 3
> 0.03 <= 0.035 , 0.0325 , 70.00, 1
> 0.035 <= 0.04 , 0.0375 , 80.00, 2
> 0.04 <= 0.045 , 0.0425 , 95.00, 3
> 0.045 <= 0.0496225 , 0.0473113 , 100.00, 1
# target 50% 0.025
# target 75% 0.0375
# target 90% 0.0433333
# target 99% 0.048698
# target 99.9% 0.0495301
Sockets used: 6 (for perfect keepalive, would be 2)
Jitter: false
Code 200 : 16 (80.0 %)
Code 503 : 4 (20.0 %)
Response Header Sizes : count 20 avg 148.8 +/- 74.4 min 0 max 186 sum 2976
Response Body/Total Sizes : count 20 avg 270.8 +/- 2.4 min 266 max 272 sum 5416
All done 20 calls (plus 0 warmup) 25.350 ms avg, 76.2 qps

在可以看到20次请求,共成功16次,4次被限流后返回了503。查看istio-proxy状态日志,命令如下:

$ kubectl exec "$FORTIO_POD" -c istio-proxy -- pilot-agent request GET stats | grep micro-api | grep pending
cluster.outbound|19090||micro-api.default.svc.cluster.local.circuit_breakers.default.rq_pending_open: 0
cluster.outbound|19090||micro-api.default.svc.cluster.local.circuit_breakers.high.rq_pending_open: 0
cluster.outbound|19090||micro-api.default.svc.cluster.local.upstream_rq_pending_active: 0
cluster.outbound|19090||micro-api.default.svc.cluster.local.upstream_rq_pending_failure_eject: 0
cluster.outbound|19090||micro-api.default.svc.cluster.local.upstream_rq_pending_overflow: 0
cluster.outbound|19090||micro-api.default.svc.cluster.local.upstream_rq_pending_total: 0

从上述日志可以看出micro-api服务的限流规则被触发了!

熔断逻辑演示

熔断是减少服务异常、降低服务延迟的一种设计模式,如果在一定时间内服务累计发生错误的次数超过了预定义阀值,Istio就会将该错误的服务从负载均衡池移除,当超过一段时间后,又会将服务再移回服务负载均衡池。

具体来说Istio引入了异常检测来完成熔断功能,通过周期性的动态异常检测来确定上游服务(被调用方)中的某些实例是否异常,如果发现异常就将该实例从连接池中隔离出去,这就是异常值检测。例如对于HTTP服务,如果API调用连续返回5xx错误,则在一定时间内连接池拒绝此服务;而对于TCP服务,一个主机连接超时/失败次数达到一定次数就认为是连接错误。

隔离不是永久的,会有一个时间限制。当实例被隔离后会被标记为不健康,并且不会被加入到负载均衡池中。具体的隔离时间等于envoy中“outlier_detection.baseEjectionTime”的值乘以实例被隔离的次数。经过规定的隔离时间后,被隔离的实例将会自动恢复过来,重新接受调用方的远程调用。

回到熔断演示案例,假设micro-pay服务不稳定,micro-order服务要实现对该服务的熔断策略,链路示意图如下:

与限流配置类似,Istio的熔断逻辑也是基于“DestinationRule”资源。针对micro-pay微服务的熔断规则配置如下(可在destination-rule-all.yaml文件增加配置):

---apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: micro-pay
spec:host: micro-paytrafficPolicy:#限流策略connectionPool:tcp:maxConnections: 1http:#http2MaxRequests: 1http1MaxPendingRequests: 1maxRequestsPerConnection: 1#熔断策略outlierDetection:consecutive5xxErrors: 1interval: 1sbaseEjectionTime: 3mmaxEjectionPercent: 100
---

如上配置,为了演示micro-pay的报错情况,这里也针对该微服务配置了限流规则。而熔断策略配置的意思是:“每1秒钟(interval)扫描一次上游主机(mico-pay)实例的情况,连续失败1次返回5xx码(consecutive5xxErrors)的所有实例,将会被移除连接池3分钟(baseEjectionTime)”。

应用该规则,命令如下:

$ kubectl apply -f destination-rule-all.yaml 

之后可通过压测工具(与限流方式类似),测试触发熔断规则的情况。具体查看方式如下:

# kubectl exec -it $FORTIO_POD  -c istio-proxy  -- sh -c 'curl localhost:15000/stats' | grep micro-pay | grep outlier

如触发成功,则可以查看到的信息如下:

cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_active: 1
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_consecutive_5xx: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_consecutive_5xx: 2
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_consecutive_gateway_failure: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_consecutive_local_origin_failure: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_failure_percentage: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_local_origin_failure_percentage: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_local_origin_success_rate: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_detected_success_rate: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_consecutive_5xx: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_consecutive_gateway_failure: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_consecutive_local_origin_failure: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_failure_percentage: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_local_origin_failure_percentage: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_local_origin_success_rate: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_success_rate: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_enforced_total: 1
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_overflow: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_success_rate: 0
cluster.outbound|18888||micro-pay.default.svc.cluster.local.outlier_detection.ejections_total: 0

具体的触发需要模拟上游服务失败的情况,可以通过编写错误代码的方式进行模拟!

后记

本文从原理到实践比较详细地介绍了以Istio为代表的Service  Mesh微服务架构实现熔断、限流的基本方法。希望本文可以帮助各位老铁进一步理解服务网格的架构内涵,并打开大家学习Service Mesh微服务架构的大门!

更多精彩推荐
直击“上云”痛点的 MSP 新生意
到底要不要报考“通信工程”?
Gartner:2020年全球IaaS公有云服务市场增长40.7%新零售:从上云到云原生 Serverless
点分享点收藏点点赞点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pca主成分分析用matlab实现,PCA (主成分分析)详解 (写给初学者) 结合matlab

一、简介PCA(Principal Components Analysis)即主成分分析&#xff0c;是图像处理中经常用到的降维方法&#xff0c;大家知道&#xff0c;我们在处理有关数字图像处理方面的问题时&#xff0c;比如经常用的图像的查询问题&#xff0c;在一个几万或者几百万甚至更大的数据库中查…

微服务最佳实践:MSE 微服务引擎

简介&#xff1a; 微服务引擎 MSE&#xff08;Microservice Engine&#xff09;是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台。其由四个主要部分组成&#xff1a;微服务治理中心、微服务注册中心、微服务配置中心、微服务网关。 MSE 是什么 微…

异地多活之企业架构案例

简介&#xff1a; 异地多活之企业架构案例 1. 前言 多活容灾 MSHA&#xff08;Multi-Site High Availability&#xff09;&#xff0c;是在阿⾥巴巴电商业务环境演进出来的多活容灾架构解决⽅案&#xff0c;可以将业务恢复和故障恢复解耦&#xff0c;有基于灵活的规则调度、跨…

WAIC|高精准、低成本,九章云极DataCanvas突破AutoML难题

2021 年世界人工智能大会&#xff08;WAIC&#xff09;于 7 月 8 日 在上海世博中心拉开帷幕。九章云极DataCanvas董事长方磊受邀参加由世界人工智能大会组委会主办、机器之心承办的“2021 WAICAI开发者论坛”&#xff0c;并发表“Hypernets&#xff1a;自动化机器学习的基础框…

matlab样条插值如何用,三次样条插值matlab实现

%三次样条差值-matlab通用程序 - zhangxiaolu2015的专栏 - CSDN博客 https://blog.csdn.net/zha%【图文】三次样条插值算法详解_百度文库 https://wenku.baidu.com/view/14423f2e1711cc7931b716clcclearxinput(请按照格式[x1,x2,x3...]格式输入yf(x)函数已知点的横坐标xi); %三…

在阿里淘系6个月能有哪些收获成长?

本文作者&#xff1a;刘博文&#xff08;Berwin&#xff09;&#xff0c;花名“玖五”&#xff0c;畅销书《深入浅出Vue.js》作者、知名技术博主、讲师、阿里巴巴淘系技术部前端技术专家&#xff0c;现负责淘系618、双11等超大型营销活动主会场的终端渲染架构。 回想起年初刚来…

matlab 向前欧拉公式,向前欧拉公式在Matlab解微分方程初值解的问题

向前欧拉公式在Matlab解微分方程初值解的问题0fuqilin1202013.07.04浏览527次分享举报用向前欧拉公式(10.8)求解初值问题&#xff0c;dy/dx-3x8x-7,y(0)1,分别取n10,n100&#xff0c;并将计算结果与精确解作比较&#xff0c;写出在每个子区间[xk,xk1]上的局部截断误差公式&…

我在阿里巴巴做 Serverless 云研发平台

简介&#xff1a; Serverless 云研发平台经过这半年多的蜕变&#xff0c;已经从简单的解决工程链路的平台演进成一个面向研发、上线、运维的全生命周期研发平台&#xff0c;后续要解决的命题会集中在用户低门槛上。 作者 | 林昱(苏河) 技术的成熟度源自大规模的实践&#xff0…

从Gartner报告,看中国数据库崛起

简介&#xff1a; 阿里云&#xff0c;在Gartner公布2020年度全球数据库魔力象限评估结果&#xff0c;作为中国科技公司代表&#xff0c;首次挺进全球数据库第一阵营——领导者&#xff08;LEADERS&#xff09;象限&#xff0c;这也是中国数据库40年来首次进入全球顶级数据库行列…

一套存储承载全场景,XSKY星辰天合发布企业级SDS V5系列

编辑 | 宋慧 出品 | CSDN云计算 头图 | XSKY星辰天合V5发布会现场 2021年7月15日&#xff0c;国内数据基础设施技术平台提供商XSKY星辰天合正式发布了企业级软件定义存储V5&#xff08;以下简称“XSKY SDS V5”&#xff09;系列产品&#xff0c;通过DATA OS数据操作系统底座升…

首次揭秘云原生Hologres存储引擎

简介&#xff1a; 本文将会首次对外公开介绍Hologres的存储引擎&#xff0c;深度剖析其实现原理和核心技术优势。 概要&#xff1a;刚刚结束的2020天猫双11中&#xff0c;MaxCompute交互式分析&#xff08;Hologres&#xff09;实时计算Flink搭建的云原生实时数仓首次在核心数…

什么是 “原型模式” ?

作者&#xff1a;东风玖哥&#xff0c;小灰来源&#xff1a;程序员小灰————— 第二天 —————————————————假如有一天&#xff0c;小灰被外星人抓走了&#xff0c;外星人要拿小灰做实验&#xff0c;想了解小灰在吃得好、睡得好、玩得开心的场景下&#xf…

制造业全链数字化业务转型实践

近日&#xff0c;阿里云Lindorm与Intel、OSIsoft推出了面向工业物联网信息经济&#xff08;Infonomics&#xff09;的IT & OT超融合工业数据云解决方案。方案通过云端打通阿里云、Intel的IT技术积累和OSIsoft的OT经验能力&#xff0c;实现对传统技术供需关系的超越&#xf…

从搜索引擎到核心交易数据库,详解阿里云神龙如何支撑双11

简介&#xff1a; 订单峰值58.3万笔/秒&#xff0c;销售额4982亿&#xff0c;阿里云神龙再次成功扛住了全球流量洪峰 2020年的双11&#xff0c;天猫又创造了新的纪录&#xff1a;订单峰值达到创纪录的58.3万笔/秒&#xff0c;销售额达到历史新高4982亿&#xff0c;阿里云神龙再…

云网一体,“湘遇湘融 | 移动云TeaTalk·长沙站 启动倒计时

在企业数字化转型、云服务和国家政策等多重因素驱动下&#xff0c;越来越多的企业、行业和政府机关将业务迁移到云上&#xff0c;单一化的网络连接模式已经不能满足企业“多系统、多场景、多业务”的上云需求&#xff0c;而是要求云和多样化网能力高度协同。中国移动作为运营商…

matlab save txt 乱码,matlab代码或中文复制到word就变成乱码怎么办?

在matlab的edit中编辑的脚本程序复制到word时&#xff0c;注释里面的汉字变为乱码怎么办。下面教你两种解决办法。软件名称&#xff1a;Matlab 7.0.1 R14 SP1 (3CD带序列号)免费版软件大小&#xff1a;1.17GB更新时间&#xff1a;2012-11-03立即下载1、这是我在matlab的edit下面…

EMAS 移动 DevOps 解决方案 —— Mobile DevOps

简介&#xff1a; DevOps这一优秀的软件交付理念在服务端已经有很多相关的实践&#xff0c;那么是否也可以应用到移动端进行交付呢&#xff1f;基于移动端和服务端场景的差异&#xff0c;移动DevOps跟服务端DevOps又有哪些不同和挑战&#xff1f;本文分享阿里云云原生应用研发平…

MongoDB 5.0 来了,原生时序、版本化 API 新特性悉数登场

作者 | 伍杏玲出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;据 DB-Engines 数据库最新 7 月流行度排行榜显示&#xff0c;前五名十分稳定&#xff1a;Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB&#xff0c;其中 MongoDB 是唯一的文档型数…

阿里云Lindorm与Intel、OSIsoft共建IT OT超融合工业数据云

近日&#xff0c;阿里云Lindorm与Intel、OSIsoft推出了面向工业物联网信息经济&#xff08;Infonomics&#xff09;的IT & OT超融合工业数据云解决方案。方案通过云端打通阿里云、Intel的IT技术积累和OSIsoft的OT经验能力&#xff0c;实现对传统技术供需关系的超越&#xf…

wamp php5.6 mysql5.6,WampServer 3.0.6 多语言版 集成apache2.4.23 mysql5.7.14 php5.6.25-7.0.10 穿墙书店...

WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包,就是Windows Apache Mysql PHP集成安装环境&#xff0c;即在window下的apache、php和mysql的服务器软件。免去了开发人员将时间花费在繁琐的配置环境过程&#xff0c;从而腾出更多精力去…