2022年6月

什么是nacos

Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理

官网地址

nacos总体概况

1341090-20191218131450236-1773026564.jpg

nacos架构

1561217775318-6e408805-18bb-4242-b4e9-83c5b929b469.png

为什么要用nacos

与eureka对比

对比项目\注册中心NacosEureka
CAP模型支持AP和CP模型AP模型
客户端更新服务信息使用注册+DNS-f+健康检查模式。 DNS-F客户端使用监听模式push/pull拉取更新信息客户端定时轮询服务端获取其他服务ip信息并对比,相比之下服务端压力较大、延迟较大
伸缩性使用Raft选举算法性能、可用性、容错性均比较好,新加入节点无需与所有节点互相广播同步信息由于使用广播同步信息,集群超过1000台机器后对eureka集群压力很大
健康检查模式/方式支持服务端/客户端/关闭检查模式,检查方式有tcp、http、sql。支持自己构建健康检查器客户端向服务端发送http心跳
负载均衡支持支持
手动上下线服务方式通过控制台页面和API通过调用API
跨中心同步支持不支持
k8s集成支持不支持
分组Nacos可用根据业务和环境进行分组管理不支持
权重Nacos默认提供权重设置功能,调整承载流量压力不支持

服务配置中心对比

对比项目/配置中心apollonacos
开源时间2016.52018.6
配置实时推送支持(HTTP长轮询1s内)支持(HTTP长轮询1s内)
版本管理自动管理自动管理
配置回滚支持支持
权限管理支持待支持
多集群多环境支持支持
监听查询支持支持
多语言Go,C++,Python,Java,.net,OpenAPIPython,Java,Nodejs,OpenAPI
分布式高可用最小集群数量Config2+Admin3+Portal*2+Mysql=8Nacos*3+MySql=4
配置格式校验支持支持
通信协议HTTPHTTP
数据一致性数据库模拟消息队列,Apollo定时读消息HTTP异步通知
单机读(tps)900015000
单机写(tps)11001800

相比与Eureka

(1)Nacos具备服务优雅上下线和流量管理(API+后台管理页面),而Eureka的后台页面仅供展示,需要使用api操作上下线且不具备流量管理功能。

(2)从部署来看,Nacos整合了注册中心、配置中心功能,把原来两套集群整合成一套,简化了部署维护

(3)从长远来看,Eureka开源工作已停止,后续不再有更新和维护,而Nacos在以后的版本会支持SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。同时来说,Nacos 计划实现 Service Mesh,是未来微服务的趋势

(4)从伸缩性和扩展性来看Nacos支持跨注册中心同步,而Eureka不支持,且在伸缩扩容方面,Nacos比Eureka更优(nacos支持大数量级的集群)。

(5)Nacos具有分组隔离功能,一套Nacos集群可以支撑多项目、多环境。

相比于apollo

(1) Nacos部署简化,Nacos整合了注册中心、配置中心功能,且部署相比apollo简单,方便管理和监控。

(2) apollo容器化较困难,Nacos有官网的镜像可以直接部署,总体来说,Nacos比apollo更符合KISS原则

(3)性能方面,Nacos读写tps比apollo稍强一些

启动nacos

你可以通过源码和发行包两种方式来获取 Nacos

从 Github 上下载源码方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual pathcd distribution/target/nacos-server-$version/nacos/bin

下载编译后压缩包方式

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

 unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz  cd nacos/bin

启动服务器

Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

Windows 启动命令:

cmd startup.cmd

或者直接运行startup.cmd文件

360截图16300502555057.png

默认账号密码都是 nacos

nacos 默认是用的内置数据库


Spring cloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,Spring cloud中各个组件在微服务架构中扮演的角色如下图所示,黑线表示注释说明,蓝线由A指向B,表示B从A处获取服务。

Spring cloud组成的微服务架构图  

由上图所示微服务架构大致由上图的逻辑结构组成,其包括各种微服务、注册发现、服务网关、熔断器、统一配置、跟踪服务等。下面说说Spring cloud中的组件分别充当其中的什么角色。

Fegin(接口调用):微服务之间通过Rest接口通讯,Spring Cloud提供Feign框架来支持Rest的调用,Feign使得不同进程的Rest接口调用得以用优雅的方式进行,这种优雅表现得就像同一个进程调用一样。

Netflix eureka(注册发现):微服务模式下,一个大的Web应用通常都被拆分为很多比较小的web应用(服务),这个时候就需要有一个地方保存这些服务的相关信息,才能让各个小的应用彼此知道对方,这个时候就需要在注册中心进行注册。每个应用启动时向配置的注册中心注册自己的信息(ip地址,端口号, 服务名称等信息),注册中心将他们保存起来,服务间相互调用的时候,通过服务名称就可以到注册中心找到对应的服务信息,从而进行通讯。注册与发现服务为微服务之间的调用带来了方便,解决了硬编码的问题。服务间只通过对方的服务id,而无需知道其ip和端口即可以获取对方方服务。

Ribbon(负载均衡):Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon,配置服务提供者的地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。在SpringCloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从EurekaServer获取服务提供者的地址列表,并基于负载均衡算法,请求其中一个服务提供者的实例(为了服务的可靠性,一个微服务可能部署多个实例)。

Hystrix(熔断器):当服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃(雪崩效应)。Hystrix正是为了防止此类问题发生。Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。

包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用了设计模式中的“命令模式”。

跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间。

资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等候,从而加速失败判定。

监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时和被拒绝的请求等。

回退机制:当请求失败、超时、被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑可由开发人员指定。

Zuul(微服务网关) :不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。例如一个电影购票的手机APP,可能调用多个微服务的接口才能完成一次购票的业务流程,如果让客户端直接与各个微服务通信,会有以下的问题:

客户端会多次请求不同的微服务,增加了客户端的复杂性。

存在跨域请求,在一定场景下处理相对复杂。

认证复杂,每个服务都需要独立认证。

难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将很难实施。

某些微服务可能使用了对防火墙/浏览器不友好的协议,直接访问时会有一定的困难。

以上问题可借助微服务网关解决。微服务网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。使用微服务网关后,微服务网关将封装应用程序的内部结构,客户端只用跟网关交互,而无须直接调用特定微服务的接口。这样,开发就可以得到简化。不仅如此,使用微服务网关还有以下优点:

易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析。

易于认证。可在微服务网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。

减少了客户端与各个微服务之间的交互次数。

Spring cloud bus( 统一配置服务):对于传统的单体应用,常使用配置文件管理所有配置。例如一个SpringBoot开发的单体应用,可将配置内容放在application.yml文件中。如果需要切换环境,可设置多个Profile,并在启动应用时指定spring.profiles.active={profile}。然而,在微服务架构中,微服务的配置管理一般有以下需求:

集中管理配置。一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此集中管理配置是非常有必要的。

不同环境,不同配置。例如,数据源配置在不同的环境(开发、测试、预发布、生产等)中是不同的。

运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小或熔断阈值,并且在调整配置时不停止微服务。

配置修改后可自动更新。如配置内容发生变化,微服务能够自动更新配置。综上所述,对于微服务架构而言,一个通用的配置管理机制是必不可少的,常见做法是使用配置服务器管理配置。Spring cloud bus利用Git或SVN等管理配置、采用Kafka或者RabbitMQ等消息总线通知所有应用,从而实现配置的自动更新并且刷新所有微服务实例的配置。

Sleuth+ZipKin(跟踪服务):Sleuth和Zipkin结合使用可以通过图形化的界面查看微服务请求的延迟情况以及各个微服务的依赖情况。需要注意的是Spring boot2及以上不在支持Zipkin的自定义,需要到官方网站下载ZipKin相关的jar包。

另外需要提一点的是Spring boot actuator,提供了很多监控端点如/actuator/info、/actuator/health、/acutator/refresh等,可以查看微服务的信息、健康状况、刷新配置等。



作者:SimpleEasy
链接:https://www.jianshu.com/p/84d2824980fe
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


微服务架构介绍

Spring Cloud Alibaba推荐的微服务生态架构基于分层架构实现如下:


接入层:最外层为LVS+Keepalived,可承受几十万级高并发流量洪峰,然后再通过内层的nginx集群将客户端请求通过负载均衡策略转发至基于JAVA后端技术栈的Spring Cloud Gateway集群;


业务中台层:Spring Cloud Gateway微服务通过Nacos获取路由配置信息和路由后端微服务提供者的发现,通过OAuth2做统一登录授权,并集成整合Sentinel针对请求做限流、熔断、降低,基于dubbo协议的高性能RPC进行微服务调用或者服务聚合调用,而后端微服务之间调用也是采用dubbo协议的rpc,对于需要分布式事务服务端则通过Seata实现。


技术中台层:数据存储层包括内存、数据库、全文检索搜索引擎存储层;基础服务层提供分布式系统常见基础组件功能;日志采集层采用ELK


系统监控层:分布式链路追踪、基于容器化的监控和告警



微服务生态涉及技术点如下



Maven整合工程入门案例

shopping-demo源码地址

https://gitee.com/yongzhebuju/shopping


功能简介


本示例主要对微服务使用Nacos实现配置中心读取、服务注册和服务发现,微服务网关实现路由策略并整合sentinel实现限流,微服务之间使用Dubbo高性能RPC进行调用。


本案例主要包含一下几个demo模块


commons:公共服务模块,存放公共pojo实体类和微服务接口模块,比如Dubbo服务提供者接口定义、基于Open Feign远程调用服务提供者接口定义等,公共模块pom可以配置一些公共引用依赖如spring-cloud-starter-alibaba-nacos-config和spring-cloud-starter-alibaba-nacos-discovery等,这样其他微服务只需依赖公共模块即可


gateway:微服务入口网关模块,负责微服务路由、授权认证、微服务聚合等功能处理


users:用户模块,提供获取用户接口


good:商品模块,提供商品接口,需要调用用户接口


核心源码和配置

工程父pom文件主要包含Spring Boot、Spring Cloud、Spring Cloud Alibaba的父依赖


<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.itxs</groupId>    <artifactId>shopping</artifactId>    <packaging>pom</packaging>    <version>1.0-SNAPSHOT</version>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.3.12.RELEASE</version>    </parent>    <modules>        <module>shopping_commons</module>        <module>shopping_goods</module>        <module>shopping_users</module>        <module>shopping_gateway</module>    </modules>    <properties>        <java.verson>1.8</java.verson>        <spring.cloud.verison>Hoxton.SR12</spring.cloud.verison>        <spring.cloud.alibaba.verison>2.2.1.RELEASE</spring.cloud.alibaba.verison>    </properties>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>${spring.cloud.verison}</version>                <type>pom</type>                <scope>import</scope>            </dependency>            <dependency>                <groupId>com.alibaba.cloud</groupId>                <artifactId>spring-cloud-alibaba-dependencies</artifactId>                <version>${spring.cloud.alibaba.verison}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement> </project>


微服务yml配置文件,微服务的配置都放在Nacos配置中心,每个微服务本地配置文件只需配置服务名称、激活的环境以及配置中心地址、配置文件扩展名、命名空间和组即可。下面为网关配置文件,其他模块配置文件与此类似


spring:  profiles:    active: dev  cloud:    nacos:      config:        server-addr: localhost:8848        file-extension: yaml        namespace: 54c53c3a-6008-4ecc-90fe-2ffcae64b95b        group: shopping  application:    name: gateway


commons 实体类和暴露获取用户接口服务


package com.itxs.entity;import java.io.Serializable;public class User implements Serializable {    private String name;    private Integer age;    public User(String name, Integer age) {        this.name = name;        this.age = age;    } }package com.itxs.service;import com.itxs.entity.User;public interface UserService {    User getUser(String userId); }


users微服务获取用户接口实现


package com.itxs.service;import com.itxs.entity.User;import org.apache.dubbo.config.annotation.Service;@Servicepublic class UserServiceImpl implements UserService{    @Override    public User getUser(String userId) {        System.out.println("userId:"+userId);        return new User("zhangsan",16);    } }


users controller实现类,在这里也提供http协议调用方式


package com.itxs.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController {    @RequestMapping("/users/1")    public String getUser(){        return "hello users";    } }


goods controller


package com.itxs.controller;import com.itxs.entity.User;import com.itxs.service.UserService;import org.apache.dubbo.config.annotation.Reference;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class GoodsController {    @Reference    UserService userService;    @RequestMapping("/goods/1")    public String getGoods(){        return "hello goods";    }    @RequestMapping("/goods/user")    public String getUserInfo(){        User user = userService.getUser("a1001");        return user.toString();    } }


Nacos 配置中心

启动本地Nacos server端,访问本地nacos管理界面http://localhost:8848/nacos,默认端口是8848,默认用户密码nacos/nacos,在dev命名空间下有网关、用户、商品微服务配置文件,都使用shoopping组



users-dev.yaml


server:  port: 8081spring:  profiles:    active: dev  cloud:    nacos:      discovery:        server-addr: 192.168.3.3:8848        namespace: 54c53c3a-6008-4ecc-90fe-2ffcae64b95b        group: shopping    sentinel:      enabled: true      transport:        dashboard: localhost:8888        port: 8719  application:    name: users


goods-dev.yaml


server:  port: 8082spring:  profiles:    active: dev  cloud:    nacos:      discovery:        server-addr: 192.168.3.3:8848        namespace: 54c53c3a-6008-4ecc-90fe-2ffcae64b95b        group: shopping    sentinel:      enabled: true      transport:        dashboard: localhost:8888        port: 8729  application:    name: goods


gateway-dev.yaml


server:  port: 8083spring:  profiles:    active: dev  main:    allow-bean-definition-overriding: true  cloud:    nacos:      discovery:        server-addr: 192.168.3.3:8848        namespace: 54c53c3a-6008-4ecc-90fe-2ffcae64b95b        group: shopping    sentinel:      enabled: true      transport:        dashboard: localhost:8080        port: 8719    gateway:      discovery:        locator:          lowerCaseServiceId: true          enabled: true      routes:        - id: users_route          uri: lb://users          predicates:            - Path=/users/**        - id: goods_route          uri: lb://goods          predicates:            - Path=/goods/**      application:    name: gatewaymanagement:  endpoints:    web:      exposure:        include: "*"


Sentinel控制台

通过Sentinel源码项目启动Sentinel控制台,是一个Spring Boot项目



访问本地Sentinel控制台界面http://localhost:8080/,默认端口是8080,默认用户密码sentinel/sentinel,由于暂时没有做持久化功能,所以刚进来是内容是空的



微服务启动

启动网关、用户、商品三个微服务,用户微服务端口为8081,商品微服务端口为8082,网关微服务端口为8083



先不通过网关直接访问goods微服务http://localhost:8082/goods/1,走http方式调用接口



通过网关路由配置我们访问用户服务http://localhost:8083/users/users/1 ,访问结果正确



继续访问商品接口服务http://localhost:8083/goods/goods/1 ,访问结果正确



访问商品服务调用用户服务 http://localhost:8083/goods/goods/user ,访问结果正确



Sentinel控制台设置下限流规则,针对goods/goods/user 这个触点链路进行流控设置





当我们每秒访问在两次内还是会访问正常,我们连续快速按F5刷新则会出现Blocked by Sentinel: FlowException,这个是默认Sentinel返回限流提供,我们也可以实现自定义限流提示







http://www.tianya.cn/143521411/profile


http://www.tianya.cn/143518697/profile


http://www.tianya.cn/143521486/profile


http://www.tianya.cn/143521503/profile


http://www.tianya.cn/143521536/profile


http://www.tianya.cn/143521568/profile


http://www.tianya.cn/143521568/profile


http://www.tianya.cn/142585408/profile


http://www.tianya.cn/143521411/


http://www.tianya.cn/143518697/


http://www.tianya.cn/143521486/


http://www.tianya.cn/143521503/


http://www.tianya.cn/143521536/


http://www.tianya.cn/143521568/


http://www.tianya.cn/143521568/


http://www.tianya.cn/142585408/


http://www.tianya.cn/143521411


http://www.tianya.cn/143518697


http://www.tianya.cn/143521486


http://www.tianya.cn/143521503


http://www.tianya.cn/143521536


http://www.tianya.cn/143521568


http://www.tianya.cn/143521568


http://www.tianya.cn/142585408


http://www.tianya.cn/140397500/profile


https://www.tianya.cn/140397500/


12.16


http://www.tianya.cn/142776503/profile


http://www.tianya.cn/142776503 作者:啊实打实发r534 https://www.bilibili.com/read/cv14451158 出处:bilibili


阿里云原生三位一体战略解读



阿里巴巴开源、自研、商业化技术三位一体,用公有云支持阿里集团上云,以开源为内核做内部扩展,以商业化为基础做内部定制;后端BaaS化,客户端轻量化,业务侧Serverless化。



Nacos作为整个阿里云原生三位战略中的核心组成部分,我们在2018年以Configserver/VIPServer/Diamond为基础通过Nacos开源输出阿里十年沉淀的注册中心和配置中心能力,并且快速成为国内首选。并且通过云产品MSE以BaaS模式输出解决方案能力。



Nacos开源三年以来,打造了完整的云原生技术生态,成为国内的事实标准,并且通过社区推动开放共建,通过阿里丰富产品打磨产品性能和可用性,通过商业化打造产品极致体验,更安全的产品能力,满足企业用户的生产要求。从而全方位锤炼Nacos各个维度的能力,正循环持续增强产品竞争力!下面我从开源、自研、商业化三个维度进行更深入的分享。



Nacos 生态&规划



Nacos 生态



Nacos几乎支持所有主流语言,其中Java/Golang/Python已经支持Nacos2.0长链接协议,能最大限度发挥Nacos性能。阿里微服务 DNSDubbo+Nacos+Spring-cloud-alibaba/Seata/Sentinel)最佳实践,是Java微服务生态最佳解决方案;除此之外,Nacos也对微服务生态活跃的技术做了无缝的支持,如目前比较流行的Envoy、Dapr等,能让用户更加标准获取微服务能力。



Nacos 规划



自从Nacos 2.0发布以来,凭借10倍性能提升激发社区活力,进入国内开源项目活跃度Top10,并且成为行业首选。随着Nacos2.0的成熟,后续Nacos1.X将进入维护状态,Nacos 2.0.X将做1.X到2.X的过度,从2.1.0版本我们将去掉过度升级逻辑,让Nacos2.0代码更加清爽,性能更加卓越,并且加速插件化和服务网格生态的进化速度,期望对此感兴趣小伙伴一起共建!!!



Nacos 阿里落地实践



Nacos 阿里百万实例微服务架构



由于阿里巴巴已经发展到百万实例级的超大集群,为了更高的性能和扩展性,我们按照职能将Nacos切分成注册中心和配置中心两个集群;建议超过10w实例规模公司从早期做好拆分。小的时候部署到一起运维和部署代价是最小的。统一接入按照流量网关和微服务网关做了两层拆分,Tengine负责流量网关,主要抗连接,证书卸载和弱七层流量控制;Envoy负责微服务网关部分,负责服务治理,协议转化,跨域互通等场景;建议超过100w/s建议做两层,不超过一层具有最佳性价比。阿里在国际化业务中将服务路由和异地多活切流能力下沉到Sidecar,并且大规模落地中,以便通过异地多活体系按照Region级别扩展集群。



目前为止,阿里云原生网关,注册中心和配置中心所有单元环境全部切到公有云产品MSE中,并且经过了99大促的验证,并且以此支持今年双十一。



Nacos 服务发现实践



随着业务规模和业务域扩大,大公司基本都会遇到跨域互通的问题,阿里巴巴通过云原生网关打通多个业务域,如钉钉和其他集团业务域互通,通过MSE的云原生网关互通,通过Dubbo3.0的Triple协议互调,没有任何协议转化的消耗,效率高,rt低,还可以通过网关配置简单的路由切分逻辑提升整体高可用。在阿里巴巴落地服务网格过程中Istio不能满足阿里规模要求,因此服务链路直接跟Nacos注册中心打通,路由规则通过Istio对接Nacos配置中心打通,以便能够大规模生产落地。



Nacos配置管理实践



阿里能够喝着咖啡搞大促的一个底层技术就是动态配置管理+预案系统(定时修改规则配置)。Nacos作为动态配置管理的基础支撑着整个双十一的核心业务。 如阿里巴巴混部快速交付一个单元环境后,会动态推送单元化规则引流到新的混部环境,大促开始前会对日志采样率规则进行调整,防止过多日志对系统性能造成影响。



Nacos 解决方案



微服务解决方案



微服务引擎(Micro Service Engine,简称 MSE)是一个面向业界主流开源微服务生态的一站式微服务平台。



用户可以在注册&配置中心、服务框架、云原生网关、服务治理四个模块随意组合,可以选择商业化产品,也可以选择自建产品,如果全部选择我们解决方案,可以直接获得阿里十年沉淀的核心竞争力。



服务网格解决方案



阿里服务网格(简称 ASM)是一个统一管理微服务应用流量、兼容Istio的托管式平台。



Nacos用户可用通过 MSE + ASM 两个产品快速组合直接进入服务网格时代。ASM 中Istio通过标准 MCP协议跟MSE 中 Nacos打通服务,MSE服务治理基于ASM流量治理原子API 做服务治理,我们的云原生网关也是基于Envoy构建,这样就可以通过Istio标准的控制东西南北流量,进而提升整个微服务高可用能力。



跨域互通解决方案



一般大公司都会有跨业务域、网络域、安全域、跨云等场景服务互通的需求,MSE云原生网关打通多个业务域,几乎所有用户都能用此方式解决,该模式通用,可管控,安全; 如果是一个网络域内,并且业务交集多,流量大,可以用Nacos-Sync组件做跨注册中心服务互通,跨域流量超过100w/s建议再考虑此种模式,该模式管控代价比较大,只能在网络互通、协议一致场景使用。 当然还有很多用户采用多注册和多订阅完成跨域互通,这样更无法管控跨域互通,风险无法识别,并且对研发有代价。



微服务高可用解决方案



随着数字化进程的演进,很多公司跟阿里巴巴一样会搞大促活动,这样峰值流量可能压垮整个系统,导致巨大经济损失,如果准备过多资源会导致资源浪费。这种场景下可以采用阿里巴巴的PTS+MSE+AHAS+ARMS+ACK产品组合,边压、边限流、边看,边弹。通过PTS模拟用户流量做全链路压测,通过MSE中云原生网关做入口限流,并且通过Nacos发现后端服务转发,通过ARMS做服务可用性和服务治理观测,通过链路追踪分析超时、异常等问题,容量不够通过ACK弹性,从而在性能、高可用、和资源利用率之间做最大平衡。



异地多活解决方案



对于快递、政府、医疗、金融等国际民生的领域,对业务可用性要求极高,需要具备异地多活的能力。阿里云MSHA提供同城多活和异地多活两种多活模式,底层采用MSE为微服务基础。MSE在一个Region内提供同AZ访问能力,具备同城容灾能力,单AZ故障,MSHA从入口将流量切到可用AZ快速恢复。 Region之间通过MSE云原生网关互通,解决服务部署不对等的跨域访问问题,MSHA通过全局控制流量入口,一个区域不可用从入口开始切流恢复业务。



作者:彦林(李艳林),彦林(李艳林),Nacos PMC,阿里云 MSE 产品创始人,阿里云软负载团队负责人。



原文链接:http://click.aliyun.com/m/1000295115/



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