云服务器内容精选

  • 代码接入 Provider端: import ( "context" "log" "net" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello" "github.com/cloudwego/kitex/pkg/rpcinfo" "github.com/cloudwego/kitex/server" "github.com/kitex-contrib/registry-servicecomb/registry" ) type HelloImpl struct{} func (h *HelloImpl) Echo(_ context.Context, req *api.Request) (resp *api.Response, err error) { resp = &api.Response{ Message: req.Message, } return } func main() { // **初始化ServiceComb注册中心,默认从环境变量读取配置** r, err := registry.NewDefaultSCRegistry() if err != nil { panic(err) } svr := hello.NewServer( new(HelloImpl), server.WithRegistry(r), server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: "Hello"}), server.WithServiceAddr(&net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 8080}), ) if err := svr.Run(); err != nil { log.Println("server stopped with error:", err) } else { log.Println("server stopped") } } Consumer端: import ( "context" "log" "time" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api" "github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello" "github.com/cloudwego/kitex/client" "github.com/kitex-contrib/registry-servicecomb/resolver" ) func main() { // **初始化ServiceComb注册中心,默认从环境变量读取配置** r, err := resolver.NewDefaultSCResolver() if err != nil { panic(err) } newClient := hello.MustNewClient( "Hello", client.WithResolver(r), client.WithRPCTimeout(time.Second*3), ) for { resp, err := newClient.Echo(context.Background(), &api.Request{Message: "Hello"}) if err != nil { log.Fatal(err) } log.Println(resp) time.Sleep(time.Second) } }
  • 验证 部署成功后,登录微服务引擎控制台,在左侧导航栏选择“ServiceComb引擎专享版”,单击前提条件创建的ServiceComb引擎,选择“微服务目录”,单击微服务名称,在“实例列表”页签查看服务实例是否已经成功注册。 您也可以验证Consumer调用Provider能够正常调用。 设置环境变量serverAddr和serverPort为ServiceComb引擎服务注册发现地址的ip和port。 运行consumer。说明成功从ServiceComb引擎的服务中心获取了provider的ip和port,并调用了provider。
  • 功能介绍 随着istio服务网格的发展,越来越多的应用都会接入服务网格,Sermant Agent提供了一种能让Spring Cloud应用也能访问服务网格中的应用的解决方案。 Spring Cloud应用访问istio应用的部署图如下: istio应用需要注册到istio中,不限制语言,Spring Cloud应用不必注册到istio中,Spring Cloud应用部署的环境可以是E CS /CCE/ASM。Spring Cloud应用会通过Sermant Agent进行istio中的服务发现,然后Spring Cloud应用便可以像调用其它Spring Cloud应用一样,通过服务名调用istio中的服务。 此功能目前处于公测阶段,当前仅在华东-上海一支持。 当ServiceComb引擎为2.x版本且未开启安全认证时,支持此功能。 Sermant Injector版本要求1.0.11及以上,Sermant Agent镜像版本要求1.0.9及以上。
  • 方案概述 本文描述如何将HSF、Dubbo框架改造为Spring Cloud框架并接入ServiceComb引擎的操作。 应用场景 很多微服务框架只是提供了如何解决微服务运维问题的功能模块和工具,但并没有帮用户解决那些问题,用户自行解决这些问题的成本通常非常高,出于现有框架的使用成本和问题,以及对未来业务的发展是否需要选择更加合适的技术考虑,可将微服务框架进行迁移。 方案架构 将HSF、Dubbo框架改造为Spring Cloud框架。 微服务框架HSF、Dubbo提供的主要功能是RPC框架,以及在RPC框架之上,提供相关的服务治理能力,包括注册发现、动态配置和限流熔断等。Spring Cloud提供REST框架,并在REST框架基础之上提供服务治理能力。因此实现微服务开发框架迁移主要是将RPC框架修改为REST框架,其操作主要包括两部分: 将服务端的接口定义由RPC修改为REST。 将客户端的调用方式由RPC修改为REST风格(包括RestTemplate,Feign等)。 服务端的接口定义相对比较集中,客户端的使用则比较难于排查。为了尽可能减少客户端代码的排查和修改,采用Feign来实现客户端代码的替换。 将Spring Cloud+Nacos、Spring Cloud+Eureka接入到ServiceComb引擎。 将Nacos、Eureka相关的依赖替换为ServiceComb引擎相关依赖。 增加ServiceComb引擎相关配置。 Nacos、Eureka一些使用习惯的调整,比如如何规划服务配置和逻辑隔离等。 下图以Eureka为例演示整个改造接入过程:
  • 实施步骤 先将HSF或Dubbo框架改造为Spring Cloud框架。其基本操作步骤为: 修改POM和项目结构。 服务端RPC接口修改为REST接口。 客户端定义Feign引用。 删除HSF或Dubbo配置并增加Spring Cloud配置。 修改启动类。 您可以使用migrator工具一键将HSF、Dubbo等框架改造为Spring Cloud。 将HSF框架改造为Spring Cloud框架详细操作指导请参考HSF迁移Spring Cloud。 将Dubbo框架改造为Spring Cloud框架详细操作指导请参考Dubbo迁移Spring Cloud。 将Spring Cloud+Nacos、Spring Cloud+Eureka接入到ServiceComb引擎。 修改pom文件将Nacos相关的依赖替换为ServiceComb引擎相关依赖。 修改bootstrap.yml文件增加ServiceComb引擎相关配置。 调整Nacos或Eureka的使用习惯。 您可以使用migrator工具一键将Spring Cloud+Nacos、Spring Cloud+Eureka接入到ServiceComb引擎。 将Spring Cloud+Eureka接入到ServiceComb引擎的详细操作指导请参考Eureka+Spring Cloud迁移CSE。 将Spring Cloud+Nacos接入到ServiceComb引擎的详细操作指导请参考Nacos+Spring Cloud迁移CSE。
  • 创建ServiceComb引擎 进入购买ServiceComb引擎专享版页面。 每个项目默认最多可以创建5个ServiceComb引擎专享版,如果您想创建更多,可以提交工单申请扩大配额。 关于项目,请参考项目。 参考下表设置参数,参数前面带*号的是必须设置的参数。 参数 说明 *计费模式 选择计费方式,目前支持: 包年/包月 按需计费 *企业项目 选择ServiceComb引擎所在的项目,可在下拉框中搜索和选择需要的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 参考开通企业项目,创建并启用新的企业项目后可以使用,默认选择default。 说明: ServiceComb引擎使用期间,请勿停用企业项目,否则会导致该引擎在引擎列表中不可见,影响正常使用。 *选择实例数 选择微服务实例数配额。 *引擎类型 选择ServiceComb引擎的类型。 引擎类型为集群,其为集群模式部署,主机级容灾。 *ServiceComb引擎名称 输入ServiceComb引擎的名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~64个字符。 须知: ServiceComb引擎名称不允许命名为“default”。 *可用区 选择可用区。 根据环境可用区数量,为引擎选择1个或者3个可用区。 选择1个可用区,可提供主机级别容灾能力。 选择3个可用区,可提供可用区级别容灾能力。 说明: 已创建的ServiceComb引擎不支持更换可用区。 同一个区域内的可用区内网互通。 多可用区可加强容灾能力。 *网络 为引擎选择虚拟私有云及其子网,可以为您的引擎构建隔离的、自主配置和管理的虚拟网络环境。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,在下拉列表中单击“创建新虚拟私有云”,创建新的虚拟私有云,具体操作请参考创建虚拟私有云和子网。 使用共享VPC,请在下拉列表选择其他账号共享给当前账号的VPC。 共享VPC基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 说明: 当引擎创建完成后,不支持变更虚拟私有云。 描述 单击,输入引擎描述信息。 标签 用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 您可以单击“ 添加标签”,在“添加标签”弹框输入标签键和标签值,添加标签,标签的命名规则请参见管理标签。在“添加标签”弹框,可单击“ 新增标签”同时添加多个标签,也可单击标签后的,删除该标签。 安全认证 开启了“安全认证”的ServiceComb引擎专享版,通过微服务引擎控制台提供了基于RBAC(Role-Based Access Control,基于角色的访问控制)的系统管理功能。 选择“开启安全认证”: 根据业务需要确认是否需要开启“编程接口安全认证”。 开启编程接口安全认证后,需要在微服务的配置文件中添加对应用户的账号密码,否则服务无法注册到引擎。 关闭编程接口安全认证,微服务的配置文件中无需配置账号密码即可将服务注册到引擎,效率性能更高,建议用于VPC内访问时使用。 输入root账号的“密码”,并在“再次输入密码”输入框输入密码进行确认。 密码请妥善保管,以免遗失。 选择“关闭安全认证”: 关闭安全认证功能,可以在实例创建完成后再设置开启。 购买时长 计费模式选择“包年/包月”时需要设置。可设置是否开通自动续费。 单击“立即购买”,进入引擎信息确认界面。 单击“提交”,等待引擎创建完毕。 ServiceComb引擎创建完成,大约需要31分钟。 ServiceComb引擎创建成功后,“状态”为“可用”。查看ServiceComb引擎状态,请参考查看ServiceComb引擎信息。 如果ServiceComb引擎创建失败,可在操作日志页面上查看失败原因并处理后可进行以下操作: 可在“ServiceComb引擎信息”区域,单击“重试”重新创建。 如果重试失败,可删除创建失败的ServiceComb引擎,删除ServiceComb引擎,请参考删除ServiceComb引擎专享版。
  • 前提条件 ServiceComb引擎运行于虚拟私有云,创建ServiceComb引擎前,需保证有可用的虚拟私有云和子网。 创建虚拟私有云和子网,请参考创建虚拟私有云和子网。 如果引擎创建账号的权限为创建引擎的最小权限,如微服务引擎细粒度权限依赖说明中的“cse:engine:create”所示。则需要由主账号为其预置VPC默认安全组cse-engine-default-sg,并添加如表1所示规则。 添加安全组规则,请参考添加安全组规则。 表1 默认安全组cse-engine-default-sg规则说明 方向 优先级 策略 协议端口 类型 源地址 入方向 1 允许 ICMP : 全部 IPv6 ::/0 1 允许 TCP : 30100-30130 IPv6 ::/0 1 允许 全部 IPv6 cse-engine-default-sg 1 允许 TCP : 30100-30130 IPv4 0.0.0.0/0 1 允许 ICMP : 全部 IPv4 0.0.0.0/0 出方向 100 允许 全部 IPv4 0.0.0.0/0 100 允许 全部 IPv6 ::/0
  • 创建治理策略 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的引擎。 选择“业务场景治理”。 当ServiceComb引擎版本为2.0.0及以上且小于2.4.0时,选择“微服务治理”。 未开启安全认证的ServiceComb引擎,请执行6。 开启安全认证的ServiceComb引擎,请执行5。 在弹出的“安全认证”对话框输入账号名及其密码,单击“确定”。 首次连接ServiceComb引擎,请输入root账号名及创建ServiceComb引擎时输入的密码。 创建账号请参考新增账号。 在“治理策略”页签,单击“创建治理策略”。 选择治理方式,单击“创建治理”,设置参数。 限流 参数名称 参数说明 治理策略名称 输入治理策略的名称。 业务场景 设置治理策略适用的业务场景: 单击“选择业务环境”,选择已创建好的业务场景名称。 单击“创建业务场景”,创建业务场景。 单位请求数 设定请求数及时间段的值。 当限流对象对当前服务实例的设定时间段内的请求数量超过设定的值,超过部分将会被限流,返回错误码429。 重试 参数名称 参数说明 治理策略名称 输入治理策略的名称。 业务场景 设置治理策略适用的业务场景: 单击“选择业务环境”,选择已创建好的业务场景名称。 单击“创建业务场景”,创建业务场景。 响应错误码 选择响应错误码,用于定义哪些错误类型会触发重试。 重试次数 设置重试次数。 重试策略 选择重试策略: 固定间隔重试:重试间隔时间固定。 指数间隔重试:采取指数退避算法确定重试间隔时间。 重试间隔时间 设置重试的间隔时间。 “重试策略”选择“固定间隔重试”:设置重试的固定间隔时间。 “重试策略”选择“指数间隔重试”:设置重试的基准时间、时间单位(s/ms)。 隔离仓 参数名称 参数说明 治理策略名称 输入治理策略的名称。 业务场景 设置治理策略适用的业务场景: 单击“选择业务环境”,选择已创建好的业务场景名称。 单击“创建业务场景”,创建业务场景。 最大并发数 根据实际系统的实际业务处理能力,设置业务的最大并发数。 阻塞计时 设置阻塞计时时间及单位(s/ms)。 当请求超出最大并发数时,超出阻塞计时时间范围后,该请求会被丢弃。 熔断 参数名称 参数说明 治理策略名称 输入治理策略的名称。 业务场景 设置治理策略适用的业务场景: 单击“选择业务环境”,选择已创建好的业务场景名称。 单击“创建业务场景”,创建业务场景。 熔断范围 滑动窗口类型 选择滑动窗口类型。 时间:时间窗口。 请求数:请求数量窗口。 滑动窗口大小 设置滑动窗口的大小。 “滑动窗口类型”为“时间”:最近n秒/分钟时间范围内的调用会被记录和统计。 “滑动窗口类型”为“基于计数”:最近n次的调用会被记录和统计。 其中,n为您设置的滑动窗口的大小。 调用次数基线 设置调用次数基线,即开启统计调用错误率至少需要达到的调用数量。 例如,设置“调用次数基线”为10,为统计错误率,则至少要记录10个调用。 熔断开启条件 错误率阈值熔断 勾选“错误率阈值熔断”时生效,设置“错误率阈值”,即调用错误的百分比。 当调用错误率不小于错误率阈值时,发生熔断,返回响应码429。 慢请求熔断 勾选“当慢请求达到您定义的比例时,开启熔断”时生效,设置以下参数: 慢请求定义:慢请求阈值定义,响应时间超过该阈值的请求都是慢请求。 慢请求比例:慢请求阈值,达到指定的慢请求比例时,发生熔断,返回响应码429。 单击“创建”,治理策略开始生效。 在治理策略列表,单击业务场景所在行的: 单击治理策略所在行“操作”列的“启用策略”,可启动已关闭的治理策略,使治理策略生效。 单击治理策略所在行“操作”列的“关闭策略”,可关闭已启动的治理策略。 单击治理策略所在行“操作”列的“编辑”,可对治理策略进行编辑。 单击治理策略所在行“操作”列的“删除”,可删除已关闭的治理策略。
  • 治理策略说明 支持限流、熔断、重试和隔离仓等策略的配置,具体说明见下表。 治理策略名称 说明 限流 面对流量风暴,或可预知的流量冲击,对非重点业务场景进行限流,防止瞬时流量过大造成服务和数据崩溃,导致服务不可用。 重试 当服务遇到一些非致命性的错误(如偶尔超时)时,可以通过重试的方式来避免服务的最终失败。 隔离仓 面对大规模并发流量风暴,或可预知的流量冲击,对并发流量进行控制,防止瞬时并发流量过大造成服务和数据崩溃,导致服务不可用。 熔断 当某业务场景的错误率超过设定阈值时,为了保证整体业务系统的可用性,在此后的一分钟内该业务场景下的所有请求会被拒绝。然后再以50%的比率接受服务请求并统计业务的错误率,直至该业务场景下的错误率降低到设定阈值以下。
  • 查看ServiceComb引擎信息 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待查看的引擎。 在“ServiceComb引擎信息”区域,查看如表1所示的ServiceComb引擎信息。 表1 引擎详细信息说明 引擎信息名称 信息说明 引擎名称 创建ServiceComb引擎时输入的引擎名称,单击可复制。单击可以修改引擎名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~64个字符。 引擎ID 引擎的ID,单击可复制。 状态 引擎的状态,包括: 创建中 可用 不可用 配置中 删除中 升级中 变更中 创建失败 删除失败 升级失败 变更失败 已冻结 引擎版本 引擎的版本号。 引擎类型 创建ServiceComb引擎时选择的引擎类型。 可用区 创建ServiceComb引擎时选择的可用区。 标签 显示为ServiceComb引擎添加的标签,也可单击“标签管理”,根据需要对标签进行相应操作,具体操作可参见管理标签。 描述 创建ServiceComb引擎时输入的引擎描述信息。
  • 什么是Mesher Mesher是Service Mesh的一个具体的实现,是一个轻量的代理服务以Sidecar的方式与微服务一起运行。 Service Mesh是由William Morgan定义: Service Mesh是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh保证请求可以在这些拓扑中可靠地传输。在实际应用当中,Service Mesh通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。 随着云原生应用的崛起,Service Mesh逐渐成为一个独立的基础设施层。在云原生模型里,一个应用可以由数百个服务组成,每个服务可能有数千个实例,而每个实例可能会持续地发生变化。服务间通信不仅异常复杂,而且也是运行时行为的基础。管理好服务间通信对于保证端到端的性能和可靠性来说是非常重要的。 Service Mesh实际上就是处于TCP/IP之上的一个抽象层,假设底层的L3/L4网络能够点对点地传输字节(同时,也假设网络环境是不可靠的,所以Service Mesh必须具备处理网络故障的能力)。 从某种程度上说,Service Mesh有点类似TCP/IP。TCP对网络端点间传输字节的机制进行了抽象,而Service Mesh则是对服务节点间请求的路由机制进行了抽象。Service Mesh不关心消息体是什么,也不关心它们是如何编码的。应用程序的目标是“将某些东西从A传送到B”,而Service Mesh所要做的就是实现这个目标,并处理传送过程中可能出现的任何故障。 与TCP不同的是,Service Mesh有着更高的目标:为应用运行时提供统一的、应用层面的可见性和可控性。Service Mesh将服务间通信从底层的基础设施中分离出来,让它成为整个生态系统的一等公民——它因此可以被监控、托管和控制。
  • mesher性能损耗是多少? 服务网格技术实际利用了网络流量劫持的方式来管理服务间流量,除了mesher本身内部的逻辑处理会耗时之外,还会引起额外的用户态和内核态间转换(CPU会有额外消耗),而前者相对于后者性能影响极小,因此性能损耗基本取决于网络中传输的payload大小。以http协议举例,影响传输速度的就是header、body等内容的大小。mesher一次端到端调用中的延迟为1ms,一个典型的用户测试过自己真实的业务调用,加上mesher后,延迟高了4ms,在用户可接受范围内。 以下测试结果为加入mesher前后的性能测试对比,使用的payload很小,就是字符串helloworld,但是加入了一定的代码以增加服务端的计算时间来模仿业务代码执行耗时。 表1 测试结果 指标 使用前 使用后 TPS 1749 1496 Latency 2.8ms 3.34ms CPU 50% 100% Concurrency 5 5 从以上结果可以看出mesher本身性能损耗很低,性能的主要瓶颈是在业务代码,如果增大payload内容,性能将会进一步降低。 建议在初期选型与POC时,使用该技术进行业务间的调用以测试真实性能损耗。 父主题: ServiceComb引擎
  • 开启安全认证 登录微服务引擎控制台。 在左侧导航栏选择“ServiceComb引擎专享版”。 单击待操作的引擎。 在“网络配置 & 安全”区域,单击“开启安全认证”。 如果引擎版本低于1.2.0,执行5。 如果引擎版本为1.2.0及以上版本,执行6。 升级引擎至1.2.0或以上版本。 单击“升级”。 选择“升级后版本”,查看版本说明,根据需要决定是否升级到该版本后,单击“确定”。 在刚升级成功的ServiceComb引擎的“网络配置 & 安全”区域,单击“开启安全认证”。 在“系统管理”页面开启安全认证。 首次开启安全认证,单击“去开启安全认证”。 需先创建root账号。输入root账号的“密码”和“确认密码”,单击“立即创建”。 再次开启安全认证,输入引擎中已关联了admin角色的账号名称及其密码。 (可选)参考角色管理,根据业务需要,创建角色。 (可选)参考账号管理,根据业务需要,创建账号。 在“系统管理”页面单击“设置安全认证”,根据实际业务需要设置安全配置。 选择开启“控制台安全认证”,请执行11。 开启控制台安全认证后,进入微服务引擎控制台界面,需要使用账号、密码登录。登录账号用户只能查看、配置有权限的服务。 选择开启“编程接口安全认证”,请执行10。 开启编程接口安全认证,会自动同步开启“控制台安全认证”。 开启编程接口安全认证后,需要在微服务的配置文件中添加对应用户的账号密码,否则服务无法注册到引擎。 关闭编程接口安全认证,微服务的配置文件中无需配置账号密码即可将服务注册到引擎,效率性能更高,建议用于VPC内访问时使用。 配置SDK,对于已部署但未配置安全认证参数的微服务组件,请参考配置微服务安全认证的账号名和密码 先为组件配置微服务安全认证的账号名和密码,再升级组件。 单击“确定”。 等待ServiceComb引擎更新完成,引擎状态由“配置中”变为“可用”,开启安全认证成功。
  • 包年/包月资源 对于包年/包月计费模式的ServiceComb引擎专享版,用户在购买时会一次性付费,服务将在到期后自动停止使用。 如果在计费周期内不再使用包年/包月资源,您可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的账户。详细的退订规则请参见云服务退订规则概览。 如果您已开启“自动续费”功能,为避免继续产生费用,请在自动续费扣款日(默认为到期前7日)之前关闭自动续费。
  • 操作步骤 安装Sermant Agent。 登录Linux弹性云服务器。 请参考Linux弹性云服务器登录方式概述选择相应方式登录弹性云服务器。 下载并安装Sermant Agent。 参考如下命令通过shell脚本方式下载并安装Java Agent。 wget -O- https://cse-bucket-cn-east-3.obs.cn-east-3.myhuaweicloud.com/javaagent/install.sh | sh 安装成功后,脚本将输出安装目录。目录为当前用户主目录。 启动应用。 在应用的启动参数上添加如下参数,添加启动参数后,待应用启动完成。 -javaagent:${HOME}/java-agent/java-agent.jar=appName=default -Ddynamic_config_serverAddress={CSE_CONFIG_CENTER_ENDPOINTS} -Dregister.service.address={CSE_REGISTRY_ENDPOINTS} 表1 启动参数说明 参数项 说明 appName agent服务名称,默认default,无需修改。 dynamic_config_serverAddress ServiceComb引擎配置中心地址,多个地址使用逗号隔开。 register.service.address ServiceComb引擎服务注册发现地址。 若需配置APP名称(默认default)、版本(默认1.0.0)请分别使用环境变量-Dservice_meta_application=yourAppName、-Dservice_meta_version=yourVersion进行设置。 ServiceComb引擎服务注册发现地址与ServiceComb引擎配置中心地址需替换为实际地址,可参考如下方式获取: ServiceComb引擎服务注册发现地址:获取ServiceComb引擎服务注册发现地址。 ServiceComb引擎配置中心地址:获取ServiceComb引擎配置中心地址。 验证应用接入ServiceComb引擎。 参考查看微服务列表查看您的应用是否已接入ServiceComb引擎。