华为云用户手册

  • 80.10.5更新内容 1. 获取VMR列表接口和修改云会议室信息接口新增参数confAllowJoinUser、isOpenWaitingRoom,具体详见 获取VMR列表和修改云会议室信息。 2. 新增设置共享权限接口SetShareScreenPermission,具体详见设置共享权限。 3. 加入会议接口新增参数isStopConflictConf,具体详见加入会议。 4. 获取会议详情新增参数vmrConfIdType,具体详见获取会议详情。 5. AppId登录接口新增参数deptCode,具体详见AppId登录。 父主题: 版本更新内容
  • 【Electron】mac平台集成ElectronSDK后,本地编译启动后应用能正常入会,但是打包后应用出现入会闪退问题 客户案例: mac平台,在集成Electron SDK后,本地编译应用启动后能正常入会,但是打包后应用出现入会闪退。 原因分析: 打包的过程没有对electronSDK的库进行签名。 解决方案: 参考demo里的签名脚本进行签名: 文件路径:hwmsdk-electron\packages\hwmsdk-electron-demo\package.json 注意:需要将脚本里面的证书替换成自己应用的证书。 父主题: 常见问题
  • 90.6.5更新内容 1.会中设置项新增抢占共享权限按钮 2.新增是否支持同终端多应用登录参数isSupportMultiAppLogin,具体请见初始化信息OpenSDKConfig 3.新增弱网信息上报接口onPoorNetworkQualityInfoNotify(),具体请见会议弱网提示通知 4.预约、编辑、创建、会议详情增加customInfo字段,具体请见BookConfParam参数说明、EditConfParam参数说明、CreateConfParam参数设置说明、ConfDetailModel参数说明 5.新增错误码412100044服务器降级,接入方收到该错误码可以继续调用入会接口离线入会 6.startCall 接口废弃 7.问题修复,体验更稳定 父主题: 版本更新内容
  • 界面定制 用户可以根据需求自定义一些会控菜单。 本章节自定义菜单示例代码为SDK默认,根据自己需求增加(增加的type值不能与SDK中HWMConfCtrlType的定义重复)或者减少。 界面配置 清除界面配置 社交分享定制 底部工具栏定制 与会者列表菜单定制 会议页面顶部titlebar菜单定制 自定义视频会议来电时接听方式按钮 联系人UI定制 头像拦截显示 自定义会中水印 录制按钮操作定制 获取错误提示 父主题: 接口参考
  • 接口功能 该接口用于设置语言,默认是中文。注意事项:1、实现自定义语言,windows平台要求在 \HwmSdk\sdkResources\language\ 目录下创建对应的国际化文件,如新增阿拉伯语则可以创建 \ar\temp.js;mac平台要求在 /HWMUISDK.framework/Versions/A/Frameworks/WKLanguage.framework/Resources/ 目录下创建对应的国际化文件,如新增阿拉伯语则可以创建 ar.lproj/Localizable.strings。通过该接口设置的语言应与系统当前语言保持一致。
  • 设置会控保底ip地址 接口描述 该接口用于设置会控保底ip地址。 注意事项 该接口非必需调用,若不设置,则使用默认保底ip。 多个地址中间用分号隔开,最多支持4个地址。 方法定义 SDKERR setGuaranteedIpAddresses(String addresses); 示例代码 SDKERR sdkerr = HWMBizSdk.getBizOpenApi().setGuaranteedIpAddresses(ip); DemoUtil.showToast("设置结果: " + sdkerr.getValue() + " " + sdkerr.getDescription()); 父主题: 基础配置
  • 80.9.5更新内容 1. Mac补充获取会议详情、编辑会议接口新增参数allowLive,具体详见获取会议详情、编辑会议。 2. 新增周期会议相关接口,具体详见预约周期会议、编辑周期会议、编辑周期子会议、取消周期会议、取消周期子会议。 3. 功能配置开关接口新增分组讨论功能开关枚举值HWM_CAPABILITY_BREAKOUT_CONF,具体请见功能配置开关。 4. 会议信息通知新增参数isInBreakoutSubConf,具体详见会议信息通知。Mac在下个版本支持。 5. Electron SDK补充常见错误码,具体详见常见错误码。 父主题: 版本更新内容
  • 接口功能 通过邮件会议通知中的会议链接入会时(会议链接如:https://bmeeting.huaweicloud.com/#/j/981924330/e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659), 链接里面的是会议ID(即举例中的981924330)和会议的Random码(即举例中的e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659)。第三方App需要调用本接口加入会议。
  • 参数描述 表1 结构体HWMConfIncomingInfo参数说明 参数 类型 描述 state HWMConfIncomingState 来电状态。 mediaType HWMSDKConfMediaType 会议媒体类型。 confId NSString 会议id。 vmrConfId NSString vmr会议id。 表2 枚举HWMConfIncomingState说明 枚举值 描述 HWMConfIncomingStateStart 初始状态,来电振铃中。 HWMConfIncomingStateAccept 接听状态,已接听来电。 HWMConfIncomingStateReject 拒绝状态,已拒绝来电。 HWMConfIncomingStateTimeout 未响应状态,呼叫超时或者主叫已挂断。 表3 枚举HWMSDKConfMediaType说明 枚举值 描述 HWMSDKConfMediaTypeAudio 音频。 HWMSDKConfMediaTypeVideo 视频。
  • 90.9.5更新内容 1. concurrentParticipants 会议方数,会议最大与会人数限制。涉及CreateConfInfo、BookConfParam、EditConfParam、ConfDetail,具体请见预约会议、编辑会议、创建会议、获取会议详情。 2. 新增日志路径设置接口setLogPath,具体请见日志路径设置。 3. 新增会议来电通知onConfIncomingNotify,具体请见会议来电通知。 父主题: 版本更新内容
  • 80.8.5更新内容 1. 获取会议详情、编辑会议接口新增参数allowLive,具体详见获取会议详情、编辑会议。Mac在下个版本支持。 2. 会议信息通知新增参数isCreator,具体详见会议信息通知。 3. 预约会议、编辑会议支持设置“来宾在主持人之前加入会议”,并可设置提前入会时间(allowGuestStartConf、allowGuestStartConfTime),具体详见预约会议、编辑会议。 父主题: 版本更新内容
  • 会议弱网提示通知 接口描述 收到该通知时,表示当前会议网络不稳定。 方法定义 /** * 弱网信息的上报 * * @param poorNetWorkInfo */ void onPoorNetworkQualityInfoNotify(PoorNetWorkQualityInfo poorNetWorkInfo); 参数描述 表1 参数说明 参数 是否必须 类型 描述 poorNetWorkInfo 是 PoorNetWorkQualityInfo 弱网信息 返回值 无。 参数拓展 表2 PoorNetWorkQualityInfo 参数说明 参数 是否必须 类型 描述 userId 是 int 用户id nickName 是 String 会中昵称 thirdUserId 是 String 三方账号 accountId 是 String 账号信息 number 否 String sip号码 isLocal 是 boolean 是否本端 audioStatus 否 LowNetWorkStatusInfo 音频网络状态 videoStatus 否 LowNetWorkStatusInfo 视频网络状态 shareStatus 否 LowNetWorkStatusInfo 共享网络状态 表3 LowNetWorkStatusInfo参数说明 参数 是否必须 类型 描述 packetLoss 是 int 丢包率 delay 是 int 时延 jitter 是 int 抖动 status 否 LowNetWorkStatusInfo 状态 表4 枚举LowNetWorkStatus说明 值 描述 LOW_NET_WORK_STATUS_NORMAL 网络正常 LOW_NET_WORK_STATUS_BAD 网络差 LOW_NET_WORK_STATUS_VERY_BAD 网络非常差 父主题: 自定义会中UI行为通知
  • 方法定义 - (void)onShareVmrInfoNotify:(HWMSDKShareVmrInfoModel *)shareVmrInfo; 示例代码 - (void)onShareVmrInfoNotify:(HWMSDKShareVmrInfoModel *)shareVmrInfo{ NSLog(@"%@", [shareVmrInfo yy_modelDescription]); }
  • 90.12.5更新内容 1. 新增显示提示信息接口ShowToast,具体请见显示提示信息。 2. 新增获取主窗口信息接口GetMainWindowInfo,具体请见获取主窗口信息。 3. getVmrList接口废弃、新增getVmrInfoList接口,具体请见云会议室列表。 4. 创建会议参数HWMCreateConfParam、预约会议参数HWMOrderConfParam新增字段HWMConfResType会议资源类型,具体请见HWMCreateConfParam参数说明、HWMOrderConfParam参数说明。 5. 新增共享vmr信息通知OnShareVmrInfoNotify,具体请见共享vmr信息变更通知。 6. 新增获取错误提示接口GetErrorMessage,文案可用于提示,具体请见获取错误提示。 7. 新增设置(会控)保底ip地址接口SetGuaranteedIpAddresses,支持下沉企业数据不上云或断网逃生,具体请见设置会控保底ip地址。 8. 新增立即会议记录通知OnP2PConfRecordNotify,具体请见立即会议记录通知。 父主题: 版本更新内容
  • 90.12.5更新内容 废弃接口getVmrList,新增接口getVmrInfoList,具体请见云会议室列表 新增共享vmr信息通知OnShareVmrInfoNotify,具体请见共享vmr信息变化 新增参数会议资源类型confResType,涉及创会信息HwmCreateConfInfo、预约会议参数HwmBookConfParam,详见预约会议、创建会议 新增立即会议记录通知OnP2PConfRecordNotify,详见自定义会中UI行为通知 新增获取错误提示接口GetErrorMessage,文案可用于提示,详见获取错误提示 新增设置(会控)保底ip地址接口SetGuaranteedIpAddresses,支持下沉企业数据不上云或断网逃生,详见设置会控保底ip地址 问题修复,体验更稳定。 父主题: 版本更新内容
  • 90.12.5更新内容 1. 新增显示提示信息接口showToast,具体详见显示提示信息。 2. 新增获取主窗口信息接口getMainWindowInfo,具体详见获取主窗口信息。 3. 创建会议、预约会议新增参数会议资源类型confResType,具体详见创建会议、预约会议。 4. 新增共享vmr信息通知onShareVmrInfoNotify,具体详见共享vmr信息通知。 5. 新增获取错误提示接口getErrorMessage,文案可用于提示,具体详见获取错误提示。 6. 新增设置(会控)保底ip地址接口setGuaranteedIpAddresses,支持下沉企业数据不上云或断网逃生,具体详见设置会控保底ip地址。 7. config接口新增配置字段copy_audience_conf_info,支持网络研讨会种观众链接的复制按钮可注入,具体详见界面配置json说明。 父主题: 版本更新内容
  • HSS权限 默认情况下,管理员创建的 IAM 用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 HSS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效,如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问HSS时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对HSS服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,HSS支持的API授权项请参见权限及授权项说明。 如表1所示,包括了HSS的所有系统权限。 表1 HSS系统权限 系统角色/策略名称 描述 类别 依赖关系 HSS Administrator 主机安全服务(HSS)管理员,拥有该服务下的所有权限。 系统角色 依赖Tenant Guest角色。 Tenant Guest:全局级角色,在全局项目中勾选。 购买HSS防护配额需要同时具有E CS ReadOnlyAccess、BSS Administrator和TMS ReadOnlyAccess角色。 ECS ReadOnlyAccess:系统策略,弹性云服务器的只读访问权限。 BSS Administrator:系统角色,费用中心(BSS)管理员,拥有该服务下的所有权限。 TMS ReadOnlyAccess:系统策略,标签管理服务的只读访问权限。 HSSFullAccess 主机安全服务所有权限。 系统策略 购买HSS防护配额需要具有BSS Administrator角色。 BSS Administrator:系统角色,费用中心(BSS)管理员,拥有该服务下的所有权限。 SMN ReadOnlyAccess:系统策略, 消息通知 服务的只读访问权限。 HSSReadOnlyAccess 主机安全服务的只读访问权限。 系统策略 SMN ReadOnlyAccess:系统策略,消息通知服务的只读访问权限。
  • 主机安全 主机安全是提升主机整体安全性的服务,通过主机管理、风险预防、入侵检测、高级防御、安全运营、网页防篡改功能,全面识别并管理主机中的信息资产,实时监测主机中的风险并阻止非法入侵行为,帮助企业构建服务器安全体系,降低当前服务器面临的主要安全风险。 在主机中安装Agent后,您的主机将受到HSS云端防护中心全方位的安全保障,在安全控制台可视化界面上,您可以统一查看并管理同一区域内所有主机的防护状态和主机安全风险。 主机安全的工作原理如图1所示。 图1 工作原理
  • 应用场景 电商秒杀是一种网上竞拍活动,通常商家会在平台释放少量稀缺商品,吸引大量客户,平台会收到平时数十倍甚至上百倍的下单请求。但是只有少数客户可以下单成功。电商秒杀系统的分流过程可以分为以下几个步骤: 用户请求进入系统:当用户发起秒杀请求时,请求会首先进入负载均衡服务器。 负载均衡:负载均衡服务器会根据一定的算法将请求分发给后端多台服务器,以达到负载均衡的目的。负载均衡算法可以采用轮询、随机、最少连接数等方式。 业务逻辑处理:后端服务器接收到请求后,进行业务逻辑处理,并根据请求的商品数量、用户身份等信息进行校验。 库存扣减:如果库存充足,后端服务器会进行库存扣减操作,并生成订单信息,返回给用户秒杀成功的信息;如果库存不足,则返回给用户秒杀失败的信息。 订单处理:后端服务器会将订单信息保存到数据库中,并进行异步处理,例如发送消息通知用户订单状态。 缓存更新:后端服务器会更新缓存中的商品库存信息,以便处理下一次秒杀请求。 秒杀过程中多次访问数据库,下单通常是利用行级锁进行访问限制,抢到锁才能查询数据库和下单。但是秒杀时的大量订单请求,往往使数据库访问阻塞。
  • 通过访问控制,保护数据安全性 正确的使用DCS提供的访问控制能力,可以有效预防您的数据被异常窃取或者破坏。 建议对不同角色的IAM用户仅设置最小权限,避免权限过大导致数据泄露或被误操作。 为了更好的进行权限隔离和管理,建议您配置独立的IAM管理员,授予IAM管理员IAM策略的管理权限。IAM管理员可以根据您业务的实际诉求创建不同的用户组,用户组对应不同的数据访问场景,通过将用户添加到用户组并将IAM策略绑定到对应用户组,IAM管理员可以为不同职能部门的员工按照最小权限原则授予不同的数据访问权限,详情请参见DCS权限管理。 建议配置白名单或安全组访问控制,保护您的数据不被异常读取和操作。 租户创建DCS实例后,可以通过配置白名单或安全组的方式进行访问控制。租户配置IP白名单或安全组的入方向、出方向规则限制,可以控制连接实例的网络范围,避免DCS暴露给不可信第三方。 Redis 4.0、Redis 5.0和Redis 6.0基础版通过白名单控制,请参考配置白名单。 Redis 6.0企业版通过配置安全组访问规则控制,请参考配置安全组。安全组入方向规则的“源地址”应避免设置为0.0.0.0/0。 建议不使用高危命令,避免攻击者直接对Redis进行致命性破坏。 为避免攻击者直接对Redis进行致命性破坏,如果业务没有使用场景,建议通过命令重命名的方式对其进行禁用, 相关列表请参见默认禁用的命令列表,支持重命名的命令列表。 建议使用非默认端口,避免端口被扫描攻击。 Redis Server监听的端口默认为6379,容易被扫描攻击,建议将端口设置为非默认端口。支持修改的端口范围:1~65535之间的其它端口号。详情请参见自定义或修改端口。 建议限制Redis客户端最大连接数,通过限制使用的资源,降低资源耗尽和拒绝服务风险。 Redis的maxclients参数决定了实例最大支持同时连接的客户端个数,默认值为10000,设置范围为1000~50000。如果超过自定义的连接数阈值,新的连接请求将被拒绝。 建议根据应用的具体使用场景设置合适的客户端最大连接数,限制资源耗尽和拒绝服务的可能性。修改maxclients参数请参见修改配置参数。 建议限制Redis连接闲置等待时间,根据业务实际场景来设置具体时间。 为避免client空闲连接长时间占用资源,可在控制台界面配置闲置等待时间(timeout参数),设置超时阈值后,将在连接空闲指定的秒数后关闭客户端连接。timeout默认值为0,表示服务端不会主动断开客户端的空闲连接。设置范围为0~7200,单位:秒。 建议根据应用的具体使用场景设置实际闲置等待时间,不建议将timeout设置为0。例如,可以将timeout设置为3600秒。避免出现资源耗尽和拒绝服务的可能性。修改timeout参数请参见修改配置参数。 建议将访问DCS实例方式设置为密码访问,防止未经认证的客户端误操作实例。达到对客户端进行认证访问的目的,提高实例使用的安全性。 您可以在购买Redis实例时进行设置访问密码,也可以对已创建的免密实例进行密码重置。 建议不同的业务使用不同的DCS实例,避免实例故障影响多个业务。
  • 审计是否存在异常数据访问 开启 云审计 服务,记录DCS的所有访问操作,便于事后审查。 云审计服务(Cloud Trace Service, CTS ),是华为 云安全 解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 您开通云审计服务并创建和配置追踪器后,CTS可记录DCS的管理事件和数据事件用于审计。详情请参见云审计服务支持的关键操作。 使用 云监控服务 对安全事件进行实时监控和告警。 您在使用DCS的过程中会也可能会遇到服务端返回的错误响应,为使您更好地掌握DCS实例状态,华为云提供了 云监控 服务(Cloud Eye)。您可使用该服务监控自己的DCS实例,执行自动实时监控、告警和通知操作,帮助您实时掌握DCS实例中所产生的请求、流量和错误响应等信息。 云监控服务不需要开通,会在用户创建DCS实例后自动启动。相关文档请参见支持的监控指标、必须配置的监控告警。
  • 构建数据的恢复和容灾能力 预先构建数据的容灾和恢复能力,可以有效避免异常数据处理场景下数据误删、破坏的问题。 建议开启实例自动备份,获得异常场景数据快速恢复能力。 DCS提供自动备份和手动备份两种备份操作。自动备份默认未开启,需要租户选择是否开启,备份存储期限最多7天。同时,开启自动备份后,允许对实例执行备份文件的恢复。自动备份请参见设置备份策略。 说明:手动备份是租户手动触发的实例全量备份,这些备份数据存储在华为OBS桶中,当租户删除实例时,会同步删除OBS桶中的快照。 建议使用跨AZ复制构建数据容灾能力。 DCS的主备和集群实例支持部署高可用实例,租户可选择在单可用区或多可用区中部署实例。 当租户选择跨AZ实例时,DCS实例会主动建立和维护Redis同步复制。在实例主节点故障的情况下,缓存实例会自动将备实例升为主节点,从而达到高可用的目的。
  • 制作客户端镜像 下载Redis客户端。 登录CCE集群节点。 单击创建完成的CCE节点池名称,进入CCE节点池,单击右上角的“远程登录”。 执行gcc --version检查操作系统是否安装了用于编译Redis程序的GCC编译器。如下图,表示已经安装了GCC编译器。 如未安装GCC编译器,请使用以下命令安装GCC编译器。 yum -y install gcc yum -y install gcc-c++ 执行以下命令,在home目录下创建redis目录,并进入该目录。 cd /home && mkdir redis && cd redis 执行以下命令下载Redis客户端。此处以下载5.0.13版本的客户端为例。 wget https://download.redis.io/releases/redis-5.0.13.tar.gz 解压Redis,进入Redis目录,执行编译命令后返回redis目录。 tar xvzf redis-5.0.13.tar.gz cd redis-5.0.13 && make redis-cli cd .. 创建Dockerfile。 使用vim Dockerfile命令创建Dockerfile,并填写以下信息。 FROM centos:7 RUN useradd -d /home/redis -m redis COPY ./redis-5.0.13 /home/redis/redis-5.0.13 RUN chown redis:redis /home/redis/redis-5.0.13 -R USER redis ENV HW_HOME=/home/redis/redis-5.0.13 ENV PATH=$HW_HOME/src:$PATH WORKDIR /home/redis/ 按下Esc键退出编辑模式,执行:wq!保存配置并退出编辑界面。 构建客户端镜像。 在控制台的服务列表中选择“ 容器镜像服务 SWR”,进入容器 镜像服务 总览页。 单击右上角“创建组织”,输入组织名称,新建一个组织。也可以使用已有的组织(单击左侧“组织管理”可查看已有组织。) 在SWR总览页单击右上角“登录指令”获取登录指令,复制登录指令。(登录指令结尾的swr.xxxxxx.com为镜像仓库地址。) 图1 获取登录指令 使用复制的登录指令在CCE节点中执行,登录SWR。 图2 登录SWR 执行以下命令构建镜像。 docker build -t {Image repository address}/{Organization name}/{Image name :version}. 其中Image repository address为镜像仓库地址,即登录指令的结尾部分;Organization name为b步骤创建的组织名称;Image name为需要构建的镜像名称,version为镜像的版本。请根据实际值进行替换。例如:docker build -t swr.xxxxxx.com/study1/redis:v1 . 图3 构建镜像 执行以下命令将客户端镜像上传到SWR。 docker push {Image repository address}/{Organization name}/{Image name :version} 图4 上传镜像 上传镜像后,可在SWR控制台“我的镜像”页面查看到Redis镜像。 图5 查看镜像
  • 前提条件 准备以下实例资源: 创建VPC和子网,例如vpc-test。创建方式请参考创建虚拟私有云和子网。 (可选)建议创建2个子网,将DCS实例放到一个子网,CCE集群放到另一个子网,方便管理。 创建DCS实例,例如dcs-test。创建方式请参考购买Redis实例。 创建的DCS实例时,“虚拟私有云”请选择所创建的VPC(vpc-test)及其子网1。 创建CCE集群,例如cce-test。创建方式请参考购买CCE集群。 创建CCE集群时,“网络模型”请选择“VPC网络";“虚拟私有云”和“子网”请选择所创建的VPC(vpc-test)及其子网2。 创建CCE节点池,例如cce-test-nodepool。创建方式请参考创建节点池。 创建CCE节点池时,“节点类型”请选择“弹性云服务器-虚拟机”,“容器引擎”请选择“Docker”,“操作系统”请选择“CentOS 7.6”,并需要绑定“弹性公网IP”,选择“使用已有”或“自动创建”。
  • 测试工作负载 登录CCE集群节点,参考登录CCE集群节点。 参考通过kubectl连接集群,下载和配置kubectl配置文件。 执行以下命令,当返回状态为“Running”时,说明Redis容器处于运行状态。 kubectl get pod -n default 使用以下命令查看Redis容器的日志。 kubectl logs --tail 10 -f redis-xxxxxxxx -n default 其中redis-xxxxxxxx为创建的工作负载实例名称。(单击工作负载名称,进入工作负载,可查看工作负载实例名称。) 从返回信息中,可以看到DCS服务返回的信息为在前面连接Redis时设置的数据值“hello redis!”。 测试完成。
  • 解决方案 使用分布式缓存服务(DCS)的Redis缓存在游戏开合服方面,可以应用到以下场景: 跨服数据同步 游戏合服后,需要将多个游戏服务器的数据进行同步,以保证游戏数据的一致性。可以使用Redis的消息队列pub/sub机制,将数据变更消息发布到Redis的频道中,其他游戏服务器订阅该频道,接收数据变更消息,从而实现数据同步。 跨服资源共享 游戏合服后,可以将多个游戏服务器的资源进行共享,例如玩家道具、金币等。可以使用Redis的分布式锁机制,来保证多个游戏服务器对资源的访问互斥,避免资源冲突。 跨服排行榜 游戏合服后,可以将多个游戏服务器的排行榜进行合并,以展示全服的排名情况。可以使用Redis的有序集合机制,来存储排行榜数据,并进行排名计算和查询。 在以上三种应用场景中,“跨服资源共享”的实现方式可以参考使用DCS实现热点资源顺序访问,“跨服排行榜”的实现方式可以参考使用Redis实现排行榜功能。 本篇文档主要介绍如何通过Redis的消息队列pub/sub机制,实现“跨服数据同步”。 在使用Redis进行游戏合服方面的应用时,需要考虑数据一致性、性能和安全等方面的问题,避免出现数据错误、性能瓶颈或者安全漏洞等问题。
  • 实施步骤 使用Redis-py库中的Redis()方法在每个游戏服务器上创建一个Redis客户端连接。 使用pubsub()方法在每个游戏服务器上创建一个Redis订阅者和发布者。用于订阅其他游戏服务器发布的消息,以及发布本地游戏服务器的数据更新消息。当某个游戏服务器需要更新数据时,它会将更新的消息发布到Redis消息队列中。其他游戏服务器会收到更新消息并相应地更新各自的本地数据。 定义一个publish_update()方法发布更新消息,并在listen_updates()方法中使用subscriber.listen()方法来监听更新消息。 当收到更新消息时,通过调用handle_update()方法来处理更新消息并更新本地数据。在游戏服务器中,通过调用publish_update()来发布更新消息,以及调用listen_updates()来监听更新消息。
  • 应用场景 游戏业务开合服,指一些大型网络游戏为了吸引新玩家,在运营一段时间后,会开启新服务区,当新服务区开放后,老服务区用户存在流向新服务区的趋势,用户数逐渐减少,为了改善老服务区用户的游戏体验,延长游戏生命周期,游戏开发商通常会进行新老服务区合并,将新开和原有的两个服务器(区)的数据合并到一个服务器(区),使新老玩家就能在同一个区进行游戏。在这个过程中,会遇到如何将不同服务器数据同步的相关问题。
  • 配置Nginx Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。 打开并修改配置文件。 cd /etc/nginx vi nginx.conf 配置示例如下,如果有多个redis实例需要公网连接,可以配置多个server,在proxy_pass中配置Redis实例连接地址。 stream { server { listen 8080; proxy_pass 192.168.0.5:6379; } server { listen 8081; proxy_pass 192.168.0.6:6379; } } proxy_pass参数配置值为同一vpc下的Redis实例的IP地址,具体可从缓存实例详情页面的“连接信息”区域获取。 图4 Nginx配置信息的输入位置 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 808 图5 启动Nginx及验证 8080和8081两个端口都在监听状态,Nginx启动成功。
  • 通过Nginx访问Redis 登录ECS控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开8080和8081两个端口。 单击ECS实例名称,进入ECS详情页面。 选择“安全组”页签,单击“配置规则”,可进入安全组配置页面。 图6 进入ECS安全组 图7 添加安全组入方向规则 在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常,大功告成。 公网环境已参考Redis-cli连接中相关步骤,安装Redis-cli客户端。 ./redis-cli -h {myeip} -p {port} -a {mypassword} 其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口。 如下图所示,设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。 图8 通过Nginx代理连接第一个Redis实例 图9 通过Nginx代理连接第二个Redis实例 至此,就完成了通过跳板机的搭建,实现公网访问Redis的操作了。
共100000条