这是 MSE 提供的三大核心产品能力之间的底层关联,产品研发团队保持每月至少迭代一次的投入,来持续提升产品竞争力。基于此,我们将 MSE 近期发布的重要能力做了一次汇总。
MSE 最早提供的是基础版和专业版,但是哪个版本适用于生产、哪个版本适用于测试,并不显而易见,增加了客户选型的时间成本;基础版不支持 Nacos2.0、ZooKeeper3.8,使得使用开源 Nacos2.0、ZooKeeper3.8 的客户,在测试环境也必须购买价格更高的专业版。
在最新发布的版本中,MSE 取消基础版、上线开发版,并且开发版也支持 Nacos2.0、ZooKeeper3.8 ,这样一来,就降低了客户测试环境的使用成本,也屏蔽了测试、生产不同环境版本选型的干扰。
是否能平滑迁移是客户选型商业化产品优先会考虑的条件之一。新版本中,MSE Nacos 提供了低版本到高版本、自建 Nacos 到 MSE Nacos 的平滑迁移方案,并且支持 Eureka 协议、ACM 协议。
注册中心的调用和配置变更都是高频使用功能,一旦出现异常,问题排查就成了用户最大的困惑,是注册和配置中心导致的,还是上下游业务自身的问题呢?新版本中,MSE Nacos 专业版提供可视化的数据观测界面和推送轨迹能力,从而非常清晰地观测到 Nacos 推送功能的履约情况,极大的提高问题的排查效率。

开源性能优化是开源自建的必修课,往往也是商业化服务会去精耕细作的能力。MSE Nacos 专业版基于阿里高性能 JDK Dragonwell 构建并且深度调优,并且 Nacos 本身基于企业级场景进行性能调优,使得 MSE Nacos2.0.4.0 版本性能比历史版本提升 40%+。
此外,与阿里云产品体系无缝对接,例如日志服务、服务治理、SSL 证书、观测、压测工具等,减少了云上的接入成本,支持注册中心 RAM 鉴权,整体支持管控策略配置,安全性也获得了全面提升。
开源 ZooKeeper 在可观测姓比较欠缺,这也导致较高的故障排查成本。MSE ZooKeeper 专业版和普罗米修斯进行了深度集成,并且可以免费使用,提供了 20 多个 Zookeeper 常用的观测指标,4 个核心资源观测指标,开放 70 多个 Metrics 指标,极大地提升了可观测性。
托管是起点、可观测是核心过程、保平安是最终目的。MSE ZooKeeper 专业版默认支持多可用区部署,获得更高的容灾级别,加强了最后一道防线。

MSE ZooKeeper 专业版基于阿里高性能 JDK Dragonwell 构建并且深度调优,读性能提升 1 倍,写性能提升 10% 以上,GC 时间降低 80%。
当流量超过系统负载时,可以通过限流降级来保障应用稳定性。限流降级是流量治理范畴比较常见、使用范围较大的能力,但仅仅是限流降级并无法解决所有的应用稳定性问题。MSE 微服务治理基于开源 OpenSergo 的微服务治理标准,提供全方位的、无入侵的、零门槛的应用视角治理能力,将限流降级和灰度发布、无损上线等流量治理能力融合在一起,提供单机流量防护、集群流量防护和网关流量防护。

此外,升级后的流量治理可应用于微服务的全链路,比如在流量入口层,可通过网关方式接入、在微服务层面不仅可保护微服务自身,也可以保护微服务依赖的中间件、如缓存、数据库等三方依赖、若通过 ACK 或者 Agent 方式接入,则无需改造一行代码即可轻松接入,若有高阶流量治理的需求,如自定义埋点,可通过 SDK 方式接入。
在分布式系统架构中,业务的流量都是端到端的。每个请求都会经过很多层处理,比如从入口网关再到 Web Server 再到服务之间的调用,再到服务访问缓存或 DB 等存储。对于我们的系统来说,数据库是非常重要的一块。因此无论是在稳定性的治理上,还是在开发提效等场景下,数据库相关的治理能力都是我们系统所需具备的能力。

随着 Go 语言、云原生的广泛采用,Go 语言在微服务场景中使用的越来越广泛,对 Go 语言微服务的治理、限流降级需求也越来越强。在 Go 语言中,虽然社区提供了 http://go.uber.org/ratelimit 等限流库,但其一,对多语言支持不足,只支持 Go,其二,功能上,限流降级会细分为流控、隔离、熔断、热点等功能,也不支持动态配置,在功能支持度上不够完善。
MSE 结合 Sentinel,给 Go 语言、Java 语言应用带来微服务治理能力。在微服务应用中,限流降级主要分为三步:
比如,针对订单创建接口(Target),我们限制请求为 1000QPS(Strategy),触发限流后,请求返回异常(FallbackAction)。在 MSE 支持通过开源 Sentinel 的方式来定义资源,并从 MSE 获取、应用限流降级规则,整体接入如下:

OpenSergo 是阿里巴巴、字节、bilibili 等企业一起共建的一套开放通用的、面向云原生服务、覆盖全链路异构化生态的微服务治理标准,并根据标准提供一系列的 API 与 SDK 实现。
OpenSergo 标准基于微服务治理中相关领域的实践与场景抽象,覆盖了服务元信息、流量治理、服务容错、数据库/缓存治理(微服务应用视角)、服务注册发现、配置治理等十几个关键领域,覆盖了完整的微服务生命周期(从开发态到测试态,到发布态,再到运行态)。无论我们是希望针对 Spring Cloud + Dubbo 服务链路配置流量灰度隔离,还是希望针对一个 Go gRPC 服务进行流量控制,还是希望针对服务访问数据库的慢 SQL 调用进行自动熔断,我们都可以利用 OpenSergo spec 中定义的 CRD 标准来进行统一配置,而无需关注各框架不同的声明式 API 及互不兼容的配置格式。

OpenSergo 项目涵盖服务元信息、服务注册发现、流量治理、服务容错、数据库治理、缓存治理等领域。在我们的首个版本 v1alpha1 版本中,社区一起发布了 服务契约(元数据)、流量路由、流控降级与容错、数据库治理 这几个领域的 CRD 标准。MSE 作为微服务治理的企业级产品,原生支持 OpenSergo 标准。
MSE Ingress Controller 通过 List-Watch 机制获取关联的 ACK 集群中 Ingress 资源的变化,然后以热更新的方式动态更新 MSE 云原生网关的路由规则。当 MSE 云原生网关收到请求时,匹配 Ingress 转发规则转发请求到后端 Service 所对应的 Pod。
相比 Nginx Ingress Controller,MSE Ingress Controller 是以热更新的方式秒级生效监听到的 Ingress 资源,这种无需重启数据面即可生效配置的方式大大提高了集群入口网关的稳定性,有效保障了业务流量无损。更重要的是,MSE Ingress Controller 可以进行多集群管理,即同时作为多个集群的入口网关,意味着可以同时监听多个集群中的 Ingress 资源,解决用户跨 Kubernetes 集群流量调度和流量治理问题。
Dubbo 作为 RPC 服务对外提供服务,而 RPC 不适合直接暴露在公网上提供南北向流量的用户请求。通常情况下,公网上的流量都会走 HTTP 或 HTTPS,接收到公网流量后,由第一层的网关做协议转换,转为 Dubbo ,再由网关将 Dubbo 的请求分发给后端的 Dubbo provider。
云原生网关也对上述典型场景提供了支持。在 Envoy 侧插入了 Dubbo 的 Transcoder filter ,由它完成 HTTP 请求到 Dubbo 请求的协议转换。第一阶段,转换功能会支持 HTTP 转 Dubbo 2.X 版本,并支持从 Nacos 订阅 Dubbo 注册信息。后续将支持从 Zookeeper 订阅 Dubbo 注册信息,以及支持 HTTP 转 Dubbo 3.0。

此外,MSE 云原生网关集成 Sentinel 限流降级且支持一键压测,来快速提升高可用建设能力,安全防护能力也获得了大幅提升,通过信通院最高安全评测等级,并且支持版本自升级及业务服务的主动健康检测,以提升服务自治能力。
MSE 云原生网关已经成为容器化过程中,升级网关架构、提升网关性能和稳定性的新选择。例如费芮互动每日处理粉丝交互超过 1 亿次, 电子券系统发放 6 亿+张电子券,4 万+门店使用费芮移动支付解决方案,支付系统每月处理 3000 万+ 笔。如此大规模的业务流量对网关接入层的性能和稳定性提出较大的挑战。
费芮的业务应用部署在阿里云容器服务 ACK 上,基于 Nginx 的 K8s Ingress 入口网关,与业务应用混布在同一集群中,对于突发流量的应对以及横向扩缩容能力有限,同时海量 C 端用户发起的 HTTPS 请求会产生大量的 TLS 加解密操作,对服务器的 CPU 造成了很大的压力,从而影响业务系统的稳定性。

另外,费芮在容器化改造后仍有一些传统的单体应用,服务之间通过域名方式调用,无法统一使用 K8s Service 进行统一管理。客户急需高性能、高可用的网关接入层,能够对南北向和东西向的流量进行统一管理,同时希望能平滑迁移存量路由配置,减少网关替换的工作量:
MSE 云原生网关作为托管型的独享实例,与部署业务应用的资源解耦,并支持过载保护、故障自愈、限流降级等功能,确保流量高峰时的稳定性。其优异的性能表现使费芮不需要高规格的资源配置即可支撑大规模的业务调用。灵活的路由策略使费芮可以对新老应用的服务调用进行统一的配置和管理,而对 Ingress 标准及 Nginx 常用注解的全面兼容,使费芮很低成本地完成了网关这个关键组件的迁移,且不需要改变平时的操作和运维方式。
本文为阿里云原创内容,未经允许不得转载。
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配