云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator

头图.png

作者 | 刘睿、杜恒

导读:RocketMQ Operator 现已加入 OperatorHub,正式进入 Operator 社区。本文将从实践出发,结合案例来说明,如何通过 RocketMQ Operator 在 Kubernetes 上快速搭建一个 RocketMQ 集群,并提供一些 RocketMQ 集群管理功能包括 Broker 扩容等。

本文主要分为三个部分:

  • 首先简单介绍一下 RocketMQ Operator 的相关知识;
  • 然后结合案例详细介绍 RocketMQ Operator 提供的自定义资源及使用方法;
  • 最后介绍 Operator 社区目前的情况并展望 RocketMQ Operator 下一步的发展方向。

相关背景知识

1. RocketMQ

2012~2013 年期间,阿里巴巴中间件团队自主研发并对外开源了第三代分布式消息引擎 RocketMQ,其高性能、低延迟、抗堆积的特性稳定支撑了阿里巴巴 双11 万亿级数据洪峰业务,其云产品 Aliware MQ 在微服务、流计算、IoT、异步解耦、数据同步等无数工况场景大放异彩。

2016 年,阿里巴巴向 Apache 软件基金会捐赠了 RocketMQ。次年,RocketMQ 顺利从基金会毕业,成为 Apache 顶级开源项目,与 Apache Hadoop,Apache Spark 一起为全球分布式、大数据领域的开发者带来福音。然而,在云原生时代的今天,RocketMQ 作为有状态的分布式服务系统,如何在大规模集群上做到极简运维,则是一个极具挑战和价值的问题。

RocketMQ 支持多种部署方式,以基本的双主双从架构为例,如下图所示。

1.png

RocketMQ 双主双从架构

这里面包括了一共 7 个 RocketMQ 服务实例:3 个 name server 实例,2 个 master broker 实例,以及 2 个 slave broker 实例。

传统的部署方式需要手动或编写脚本在每个节点上进行环境和文件配置。此外,随着用户业务的增加,存在对集群进行无缝扩容等需求。传统方式是运维人员访问不同节点,依赖操作手册和脚本按步骤进行操作来完成,耗费人力,且存在误操作的可能。一些公司可能会使用一些平台和工具如 Ansible 来帮助自动化运维,此外越来越多的公司开始集成和使用基于 Kubernetes 的云原生生态。

使用 Kubernetes 提供的 Deployment 和 StatefulSet 等原生资源可以很好地解决无状态应用的管理问题,但对于数据库和 RocketMQ 这类有状态应用,则存在很多局限性。例如对 RocketMQ 来说扩容不仅仅是拉起新的实例 Pod 就完成了,还需要同步复制 Broker 的状态信息包括 Topic 信息和订阅关系这些元数据,同时要正确配置新 Broker 的 config 参数,包括 brokerName 和 NameServer IP List 等,才能使得新扩容的 Broker 可用,而这些仅仅靠用户编写 StatefulSet,修改 size 或 replicas 然后 apply 是无法做到的。

实际上 Kubernetes 开发人员也发现了这些问题,因此引入了自定义资源和控制器的概念,让开发人员可以直接用 Go 语言调用 Kubernetes API,编写自定义资源和对应的控制器逻辑来解决复杂有状态应用的管理问题,提供特定应用相关的自定义资源的这类代码组件称之为 Operator。由具备 RocketMQ 领域知识的专家编写 Operator,屏蔽了应用领域的专业知识,让用户只需要关心和定义希望达到的集群终态,这也是 Kubernetes 声明式 API 的设计哲学。

2. Kubernetes Operator

Operator 是在 Kubernetes 基础上通过扩展 Kubernetes API,用来创建、配置和管理复杂的有状态应用,如分布式数据库等。Operator 基于 Kubernetes 1.7 版本以来引入的自定义控制器的概念,在自定义资源和控制器之上构建,同时又包含了应用程序特定的领域知识。实现一个 Operator 的关键是 CRD(自定义资源)和 Controller(控制器)的设计。

Operator 站在 Kubernetes 内部视角,为应用的云原生化打开了新世界的大门。自定义资源可以让开发人员扩展添加新功能,更新现有的功能,并且可以自动执行一些管理任务,这些自定义的控制器就像 Kubernetes 原生的组件一样,Operator 可以直接使用 Kubernetes API 进行开发,也就是说他们可以根据这些控制器编写的自定义规则来创建和更改 Pods / Services、对正在运行的应用进行扩缩容。

快速开始

本文使用 RocketMQ Operator 0.2.1 版本,展示如何使用 RocketMQ Operator 在 Kubernetes 上快速创建部署一个 RocketMQ 服务集群。

  • 准备好 K8s 环境,可以使用 docker desktop 自带的 K8s,或者 minikube;
  • 克隆 rocketmq-operator 仓库到你的 K8s 节点上;
$ git clone https://github.com/apache/rocketmq-operator.git
$ cd rocketmq-operator
  • 运行脚本安装 RocketMQ Operator;
     
$ ./install-operator.sh
  • 检查下 RocketMQ Operator 是否安装成功
$ kubectl get pods
NAME                                      READY   STATUS    RESTARTS   AGE
rocketmq-operator-564b5d75d-jllzk         1/1     Running   0          108s

成功安装时,rocketmq-operator pod 处于类似上面例子的 running 状态。

  • 应用 Broker 和 NameService 自定义资源,创建 RocketMQ 集群;

应用 rocketmq-operator / example 中的 rocketmq_v1alpha1_rocketmq_cluster.yaml 文件,快速部署一个 RocketMQ 集群。rocketmq_v1alpha1_rocketmq_cluster.yaml 文件内容如下:

apiVersion: rocketmq.apache.org/v1alpha1
kind: Broker
metadata:# name of broker clustername: broker
spec:# size is the number of the broker cluster, each broker cluster contains a master broker and [replicaPerGroup] replica brokers.size: 1# nameServers is the [ip:port] list of name servicenameServers: ""# replicationMode is the broker replica sync mode, can be ASYNC or SYNCreplicationMode: ASYNC# replicaPerGroup is the number of each broker clusterreplicaPerGroup: 1# brokerImage is the customized docker image repo of the RocketMQ brokerbrokerImage: apacherocketmq/rocketmq-broker:4.5.0-alpine# imagePullPolicy is the image pull policyimagePullPolicy: Always# resources describes the compute resource requirements and limitsresources:requests:memory: "2048Mi"cpu: "250m"limits:memory: "12288Mi"cpu: "500m"# allowRestart defines whether allow pod restartallowRestart: true# storageMode can be EmptyDir, HostPath, StorageClassstorageMode: EmptyDir# hostPath is the local path to store datahostPath: /data/rocketmq/broker# scalePodName is broker-[broker group number]-master-0scalePodName: broker-0-master-0# volumeClaimTemplates defines the storageClassvolumeClaimTemplates:- metadata:name: broker-storagespec:accessModes:- ReadWriteOncestorageClassName: rocketmq-storageresources:requests:storage: 8Gi
---
apiVersion: rocketmq.apache.org/v1alpha1
kind: NameService
metadata:name: name-service
spec:# size is the the name service instance number of the name service clustersize: 1# nameServiceImage is the customized docker image repo of the RocketMQ name servicenameServiceImage: apacherocketmq/rocketmq-nameserver:4.5.0-alpine# imagePullPolicy is the image pull policyimagePullPolicy: Always# hostNetwork can be true or falsehostNetwork: true#  Set DNS policy for the pod.#  Defaults to "ClusterFirst".#  Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.#  DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.#  To have DNS options set along with hostNetwork, you have to specify DNS policy#  explicitly to 'ClusterFirstWithHostNet'.dnsPolicy: ClusterFirstWithHostNet# resources describes the compute resource requirements and limitsresources:requests:memory: "512Mi"cpu: "250m"limits:memory: "1024Mi"cpu: "500m"# storageMode can be EmptyDir, HostPath, StorageClassstorageMode: EmptyDir# hostPath is the local path to store datahostPath: /data/rocketmq/nameserver# volumeClaimTemplates defines the storageClassvolumeClaimTemplates:- metadata:name: namesrv-storagespec:accessModes:- ReadWriteOncestorageClassName: rocketmq-storageresources:requests:storage: 1Gi

注意到这个例子中 storageMode: EmptyDir,表示存储使用的是 EmptyDir,数据会随着 Pod 的删除而抹去,因此该方式仅供开发测试时使用。一般使用 HostPath 或 StorageClass 来对数据进行持久化存储。使用 HostPath 时,需要配置 hostPath,声明宿主机上挂载的目录。使用 storageClass 时,需要配置 volumeClaimTemplates,声明 PVC 模版。具体可参考 RocketMQ Operator 文档。

应用上面的 yaml 文件,输入命令:

$ kubectl apply -f example/rocketmq_v1alpha1_rocketmq_cluster.yaml
broker.rocketmq.apache.org/broker created
nameservice.rocketmq.apache.org/name-service created

查看集群 Pod 状态:

$ kubectl get pods -owide
NAME                                 READY   STATUS    RESTARTS   AGE     IP             NODE             NOMINATED NODE   READINESS GATES
broker-0-master-0                    1/1     Running   0          27s     10.1.2.27      docker-desktop   <none>           <none>
broker-0-replica-1-0                 1/1     Running   0          27s     10.1.2.28      docker-desktop   <none>           <none>
name-service-0                       1/1     Running   0          27s     192.168.65.3   docker-desktop   <none>           <none>
rocketmq-operator-76b4b9f4db-x52mz   1/1     Running   0          3h25m   10.1.2.17      docker-desktop   <none>           <none>

使用默认的 rocketmq_v1alpha1_rocketmq_cluster.yaml 文件配置,我们看到集群中拉起了 1 个 name server 服务(name-service-0)和 2 个 broker 服务(1 主 1 从)。

好啦!到这里你已经成功通过 Operator 提供的自定义资源部署了一个 RocketMQ 服务集群。

  • 访问这个 RocketMQ 集群中的 Pod 来验证集群是否能正常工作;

使用 RocketMQ 的 tools.sh 脚本运行 Producer example:

$ kubectl exec -it broker-0-master-0 bash
bash-4.4# sh ./tools.sh org.apache.rocketmq.example.quickstart.Producer
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
06:56:29.145 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
SendResult [sendStatus=SEND_OK, msgId=0A0102CF007778308DB1206383920000, offsetMsgId=0A0102CF00002A9F0000000000000000, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-0, queueId=0], queueOffset=0]
...
06:56:51.120 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[10.1.2.207:10909] result: true
bash-4.4#

在另一个节点上运行 Consumer example:

$ kubectl exec -it name-service-0 bash
bash-4.4# sh ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
07:01:32.077 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
Consumer Started.
ConsumeMessageThread_1 Receive New Messages: [MessageExt [queueId=0, storeSize=273, queueOffset=19845, sysFlag=0, bornTimestamp=1596768410268, bornHost=/30.4.165.204:53450, storeTimestamp=1596768410282, storeHost=/100.81.180.84:10911, msgId=6451B45400002A9F000014F96A0D6C65, commitLogOffset=23061458676837, bodyCRC=532471758, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=19844, TRACE_ON=true, eagleTraceId=1e04a5cc15967684102641001d0db0, MAX_OFFSET=19848, MSG_REGION=DefaultRegion, CONSUME_START_TIME=1596783715858, UNIQ_KEY=1E04A5CC0DB0135FBAA421365A5F0000, WAIT=true, TAGS=TagA, eagleRpcId=9.1}, body=[72, 101, 108, 108, 111, 32, 77, 101, 116, 97, 81, 32, 48], transactionId='null'}]] 
ConsumeMessageThread_4 Receive New Messages: [MessageExt [queueId=1, storeSize=273, queueOffset=19637, sysFlag=0, bornTimestamp=1596768410296, bornHost=/30.4.165.204:53450, storeTimestamp=1596768410298, storeHost=/100.81.180.84:10911, msgId=6451B45400002A9F000014F96A0D7141, commitLogOffset=23061458678081, bodyCRC=1757146968, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=19636, TRACE_ON=true, eagleTraceId=1e04a5cc15967684102961002d0db0, MAX_OFFSET=19638, MSG_REGION=DefaultRegion, CONSUME_START_TIME=1596783715858, UNIQ_KEY=1E04A5CC0DB0135FBAA421365AB80001, WAIT=true, TAGS=TagA, eagleRpcId=9.1}, body=[72, 101, 108, 108, 111, 32, 77, 101, 116, 97, 81, 32, 49], transactionId='null'}]]
...
  • 删除集群,清理环境;

清除 RocketMQ 服务集群实例:

$ kubectl delete -f example/rocketmq_v1alpha1_rocketmq_cluster.yaml

清除 RocketMQ Operator:

$ ./purge-operator.sh

按照 OperatorHub 官网指导安装 RocketMQ Operator

  • 在 OperatorHub.io 网页搜索 RocketMQ Operator;

选择 Streaming & Messaging 类别,点击 RocketMQ Operator:

2.png

  • 进入 RocketMQ Operator 页面,点击 Install 按钮;

3.png

  • 按照说明安装 OLM 和 RocketMQ Operator;

4.png

本地安装 OLM 来使用 RocketMQ Operator

  • 本地安装和动 OLM(Operator Lifecycle Manager) console;

参考:OLM 安装文档。

  • 本地启动 UI 界面控制台;
$ make run-console-local
  • 访问 http://localhost:9000 查看控制台;

5.png

OperatorHub

  • 搜索 RocketMQ 或点击 All Items 分类中的 Streaming & Messaging,找到 RocketMQ Operator 并进行安装;
  • 安装完 RocketMQ Operator 后可以在 Installed Operators 中找到 RocketMQ Operator;

6.png

已安装的 Operators 界面

7.png

RocketMQ Operator 介绍界面

8.png

通过 UI 界面创建 NameService 自定义资源

可以在 UI 中创建指定 Namespace 下的 NameService 和 Broker 实例,并对已创建的实例进行浏览和管理。我们也可以通过命令查看当前 K8s 集群中的 Pod 状态,例如:

$ kubectl get pods -A
NAMESPACE     NAME                                            READY   STATUS    RESTARTS   AGE
docker        compose-78f95d4f8c-8fr5z                        1/1     Running   0          32h
docker        compose-api-6ffb89dc58-nv9rh                    1/1     Running   0          32h
kube-system   coredns-5644d7b6d9-hv6r5                        1/1     Running   0          32h
kube-system   coredns-5644d7b6d9-mkqb6                        1/1     Running   0          32h
kube-system   etcd-docker-desktop                             1/1     Running   0          32h
kube-system   kube-apiserver-docker-desktop                   1/1     Running   0          32h
kube-system   kube-controller-manager-docker-desktop          1/1     Running   1          32h
kube-system   kube-proxy-snmxh                                1/1     Running   0          32h
kube-system   kube-scheduler-docker-desktop                   1/1     Running   1          32h
kube-system   storage-provisioner                             1/1     Running   1          32h
kube-system   vpnkit-controller                               1/1     Running   0          32h
marketplace   broker-0-master-0                               1/1     Running   0          5h3m
marketplace   broker-0-replica-1-0                            1/1     Running   0          5h3m
marketplace   name-service-0                                  1/1     Running   0          5h3m
marketplace   marketplace-operator-69756457d8-42chk           1/1     Running   0          32h
marketplace   rocketmq-operator-0.2.1-c9fffb5f-cztcl          1/1     Running   0          32h
marketplace   rocketmq-operator-84c7bb4ddc-7rvqr              1/1     Running   0          32h
marketplace   upstream-community-operators-5b79db455f-7t47w   1/1     Running   1          32h
olm           catalog-operator-7b788c597d-gjz55               1/1     Running   0          32h
olm           olm-operator-946bd977f-dhszg                    1/1     Running   0          32h
olm           operatorhubio-catalog-fvxp9                     1/1     Running   0          32h
olm           packageserver-789c7b448b-7ss7m                  1/1     Running   0          32h
olm           packageserver-789c7b448b-lfxrw                  1/1     Running   0          32h

可以看到在 marketplace 这个 namespace 中也成功创建了对应的 name server 和 broker 实例。

以上是基于 OperatorHub 和 OLM 安装使用 RocketMQ Operator 的案例,我们将持续推送和维护新版本的 RocketMQ Operator 至该平台,方便用户获取最新更新或选择合适的 Operator 版本。

 

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

Spring Security BadCredentialsException: Bad credentials问题解决

问题描述&#xff1a; org.springframework.security.authentication.BadCredentialsException: Bad credentials 问题分析&#xff1a; 1、数据库里面的密码没有加密&#xff0c;导致输入正确密码也匹配不上。 解决办法&#xff1a;使用PasswordEncoder先将当前密码加密&…

携程在港挂牌:两次疫情两次上市 穿越周期初心不灭

携程香港联合交易所上市庆祝仪式现场 2021年4月19日9点30分,携程集团正式在香港联合交易所上市&#xff0c;股份代号&#xff1a;9961.hk。这是继2003年在美国纳斯达克上市后&#xff0c;携程在香港的第二次上市。在上海市凌空SOHO携程总部大楼前&#xff0c;8位携程客人代表数…

淘宝直播在智能互动领域的探索及落地

简介&#xff1a; 随着带宽成本的降低和端上算力的提升&#xff0c;在直播、短视频中基于流的互动玩法也将越来越丰富&#xff1b;无论是基于人脸、手势、分割算法的智能化贴纸&#xff0c;还是结合算法的小游戏有了越来越好的舞台&#xff1b;业界短视频和直播主要针对的娱乐性…

基于实时计算Flink的机器学习算法平台及场景介绍

作者&#xff1a;高旸&#xff08;吾与&#xff09;&#xff0c;阿里巴巴高级技术专家 1. 前言 随着互联网“人口红利”的“消耗殆尽”&#xff0c;基于“T1”或者离线计算的机器学习平台及推荐系统转化率与效果日趋“平淡”。后疫情时代的新社会模式及经济形态必将催生出新的…

SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)

简介&#xff1a; 本篇是“SpringCloud 应用在 Kubernetes 上的最佳实践”系列文章的第六篇&#xff0c;主要介绍了如何保障生产环境服务稳定&#xff0c;做到随时发布&#xff0c;从而加快业务的迭代和上线速度。 文&#xff1a;骐羽 前言 在应用发布上线的时候我们最担心的…

mPaaS:全新移动开发平台,只为打造性能更优越的App

简介&#xff1a; 基于移动开发现状与技术演进预判&#xff0c;提供移动开发强力解决方案&#xff0c;洞察 mPaaS 如何帮助企业有效降低技术门槛&#xff0c;减少研发成本&#xff0c;搭建更稳定、更流畅的移动 App。 mPaaS 是源自于支付宝的移动开发平台&#xff0c;为移动开发…

德勤2021技术趋势:繁琐、点状的匠人AI时代将终结,MLOps时代来临

作者 | 宋慧 出品 | CSDN 头图 | 付费下载于视觉中国 德勤在近日发布《2021 年技术趋势》报告&#xff0c;这已经是德勤连续第十二年发布全球技术趋势报告。纵观今年的九大技术趋势&#xff0c;德勤给出的主题关键词是“韧性”&#xff0c;建议企业运用技术实现敏捷发展、构建…

Security RBAC 表结构+权限查询sql

文章目录1. 表结构2. 权限查询sql1. 表结构 /*Navicat Premium Data TransferSource Server : 127.0.0.1Source Server Type : MySQLSource Server Version : 80026Source Host : localhost:3306Source Schema : sys-adminTarget Server Type …

蚂蚁架构师郭援非:分布式数据库是金融机构数字化转型的最佳路径

简介&#xff1a; OceanBase立志于成为世界领先的企业级数据技术解决方案提供商。 2020年8月26-28日&#xff0c;在中科软科技举办的中国财险科技应用高峰论坛上&#xff0c;蚂蚁集团高级解决方案架构师郭援非发表了《OceanBase分布式关系数据库助力保险业务创新》的主题演讲&…

实锤!Python 真没你想的那么简单…

首先我不可否认&#xff0c;Python确实很“火”&#xff01;很多开发者都把它当做主语言或是第二语言。当做主语言原因很好理解&#xff0c;因为最近几年它在人工智能、数据分析、Web开发等众多领域都有着非常成熟的应用。当做第二语言&#xff0c;是因为用它来完成多线程、数据…

jdbcUrl is required with driverClassName错误解决

springboot 升级到2.0之后发现配置多数据源的时候报错&#xff1a; “jdbcUrl is required with driverClassName.”或者Cause: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.] with root cause 主要原因是在1.0 配置数据…

用根因定位法,让运维效率再高一点!

‍‍作者 | 中国农业银行研发中心 王哲头图 | 下载于视觉中国出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;随着业务不断发展&#xff0c;微服务架构越来越受到各大企业的青睐&#xff0c;随之也给传统运维带来更大的挑战&#xff0c;多维KPI指标数量繁多…

零基础开发 nginx 模块

简介&#xff1a; 推荐学习资料: * nginx 开发指南: http://nginx.org/en/docs/dev/development_guide.html * nginx 动态模块编译博客文章: https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/ * nginx 源码: https://github.com/nginx 推荐学习资料: nginx…

勒索病毒如何防治?看阿里云双拳出击不留隐患

简介&#xff1a; 阿里云与合作伙伴Commvault联合发布勒索病毒防治解决方案&#xff0c;从公共云、混合云等场景入手&#xff0c;提供完善的解决方案 在众多的数据安全工作中&#xff0c;勒索病毒的防治是近几年备受关注的领域。从互联网诞生伊始&#xff0c;勒索病毒就相生相…

中国五大移动应用商店携手启动64位安卓生态迁移

为协助中国安卓开发者无缝对接全球64位开发环境&#xff0c;并进一步向终端用户提供最佳体验&#xff0c;中国五大移动应用商店&#xff08;排名不计先后&#xff09;—小米应用商店、OPPO软件商店、vivo应用商店、腾讯应用宝、百度手机助手&#xff0c;于今日共同宣布&#xf…

滴滴基于 Flink 的实时数仓建设实践

随着滴滴业务的高速发展&#xff0c;业务对于数据时效性的需求越来越高&#xff0c;而伴随着实时技术的不断发展和成熟&#xff0c;滴滴也对实时建设做了大量的尝试和实践。本文主要以顺风车这个业务为引子&#xff0c;从引擎侧、平台侧和业务侧各个不同方面&#xff0c;来阐述…

闲鱼直播三周内实现点击率翻倍,我们是这么做到的...

作者&#xff1a;闲鱼技术-莫癫 1. 业务背景 闲鱼直播业务上线后面临的最大问题是增长问题。闲鱼BI同学分析发现&#xff0c;对比短时观看和长时观看人群&#xff0c;发现两部分人群有较明显的兴趣阶段性差异。 业务希望在理解直播、主播和用户的基础根据兴趣对头部优质直播精…

Azure 中国四年扩容 12 倍还不够,微软放话:全球每年新建 50-100 数据中心!

数据已渗透到我们生活和工作的方方面面&#xff0c;如今全球正处于经济发展转型与变革的关键时期&#xff0c;数据作为数字经济的核心生产要素&#xff0c;无疑建设先进的数据中心是科技企业的硬核 IT 实力的有力保证&#xff0c;科技巨头纷纷强势布局数据中心&#xff1a; 据…

打造数字化服务能力,中国联通如何借助云原生技术实现增长突围?

简介&#xff1a; 中国联通与阿里云结合阿里云原生 PaaS、阿里飞天操作系统、阿里云原生数据库以及中国联通天宫平台&#xff0c;共同研发运营商级专有云平台“天宫云”&#xff0c;支撑中国联通核心业务应用。 8 月 13 日&#xff0c;中国联通发布《2020 年半年度报告》&#…

报名倒计时 | 「TeaTalk」技术沙龙成都站再来袭!

在5G浪潮驱动下&#xff0c;数据增长速度远远超过了网络带宽的增速。同时&#xff0c;增强现实、无人驾驶等众多新应用的出现对延迟提出了更高要求。边缘计算将网络边缘上的计算、网络与存储资源组成统一的平台为用户提供服务&#xff0c;使数据在源头附近就能得到及时有效的处…