摘要即时通讯云网易云信于2018年03月29日发布45.0版,gRPC 调用是通过 HTTP POST

摘要2018年4月26日,统一推送联盟在中国信息通信研究院召开2018成员大会。来自华为、OPPO、VIVO、小米、阿里巴巴、腾讯、百度、中国移动、中国联通、中国电信等多家厂商的100余位代表参加了此次会议。前言本次会议在梳理联盟成立以来取得的工作成果的同时,为联盟后续工作指明了方向。会上,联盟秘书处从行业发展、政府支撑和用户体验的角度,向与会人员汇报了关于统一推送接口标准、内容安全、推必达业务、绿色App应用公约等相关工作的进展,得到了代表的一致认可。为了加强联盟后续管理工作的规范性,本次会议表决通过了《统一推送联盟工作组管理办法(试行)》,《统一推送联盟团体标准管理办法(试行)》,《统一推送联盟研究课题管理办法(试行)》。为了增强联盟凝聚力,更好的开展后续工作,本次会议对统一推送联盟副秘书长候选人进行了投票表决。经过与会成员投票,来自泰尔终端实验室的蒋阿芳等6人当选统一推送联盟副秘书长。本次会议对《统一推送通道层接口规范》等7份标准及技术文档进行了充分的讨论,各方参会代表积极参与、贡献力量、凝聚共识、求同存异。最终,7份标准得到参会代表的一致认可,顺利通过。本次会议取得成果简要概况如下。统一推送的接口和测试标准达成共识考虑到业务的多样性,安卓APP开发者对于推送服务有着很多个性化的需求。为了尽快和各方达成一致,联盟当前将重点放在解决开发者的共性需求层面,基于“求同存异”的原则,通过多层次的标准架构来解决开发者的不同诉求。具体方案是通道层提供基础功能(类似APNs的功能),平台层各厂商提供差异化功能,而更加个性化的功能放在应用层,由开发者来实现。基于上述原则,联盟本次会议审议了《统一推送业务需求》、《统一推送通道层接口规范》、《统一推送技术要求和测试方法》三本标准,主要聚焦统一推送通道层的核心功能集。上述标准在本次会议上基本达成一致。下一步细化相关细节后在联盟网站公开征求意见,并适时推动标准的行业应用和普及。设立“内容安全组”,倡导行业自律,共建文明推送环境党的十八大以来,党中央高度重视信息网络安全,并做出了加强国家网络安全工作的重要部署。鉴于此,联盟秘书处决定设立内容安全小组,本着行业自律的原则,积极配合国家监管机构,对推送信息内容进行安全审核,为用户提供积极健康的内容,创造良好的文化环境。会上通过了“内容审核系统框架设计标准”,建立中心节点与子节点相结合的部署方案。本着行业自律、资源共享的原则,通过多方的共同努力,完善词库和策略,为内容审核的健康发展提供有力保障。后续,联盟将制定内容审核技术要求和测试方法的标准,同时和产业各方开展审核方案的部署,加快审核平台建设,为统一推送的健康发展保驾护航。“推必达”——信令级的推送解决方案当前IP推送面临诸多问题,例如推送服务的可靠性不够高,推送通道的带宽有限,对网路环境依赖较高等。为了解决上述问题,统一推送联盟联合三大运营商,共同推出信令级推送的解决方案——推必达。推必达利用信令级通道的高可靠及广播能力,帮助开发者推送提供基于场景及业务的短信/推送的增值服务。该服务可以提供100%的到达率。同时,由于采取信令通道进行推送,具有无需后台常驻进程,无额外耗电,无额外流量,无需安装SDK的特点。“推必达”的产品特性可满足诸多垂直行业的推送需求。如银行服务提醒、移动办公通知、验证码下发等相关垂直领域。当推送触达用户后,用户无需进入短信箱读取相应信息,只需要点击推送消息通知,可直接跳转至相关App进行操作,最大限度的提升用户体验。后续,联盟将组织相关小组会议,尽快推动推必达产品的商业化进程。“绿色App”——用户的新选择一直以来,统一推送联盟将国家的要求视为责任,将用户的诉求视为目标,积极推动安卓绿色应用生态的建设。本次会议,统一推送联盟联合Android绿色应用公约联合发布了中国绿色App应用公约。该公约基于Android绿色应用公约2.0版本,呼吁App开发者切实践行社会主义核心价值观,为用户提供积极健康的内容。具体技术条款兼顾了用户隐私及用户体验,限制了App相关权限和后台行为。同时,为了更好的方便开发者支持绿色App应用公约,统一推送联盟官方网站(www.chinaupa.com)开辟了“绿色App“板块。开发者可以登录查看具体条款提交少数关键信息,即可支持公约。后续,联盟将尽快上线App测试认证服务。统一推送联盟将定期公布”支持公约“及”通过认证“的App,为有良知的开发者进行宣传。未来,我们相信,后台纯净,不侵犯隐私的“绿色App”将成为安卓用户的新选择。

摘要即时通讯云网易云信于2018年03月29日发布45.0版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为
5.0版,更新时间为:2018年03月29日。iOS
更新内容新增缓存搜索以及清理接口@protocol NIMResourceManager /** *
搜索缓存的资源文件 * * @param option 搜索选项 * @param completion
完成回调 */- (void)searchResourceFiles:(NIMResourceQueryOption
*)option completion:(NIMResourceSearchHandler)completion;/** *
删除缓存的资源文件 * * @param option 搜索选项 * @param completion
完成回调 */- (void)removeResourceFiles:(NIMResourceQueryOption
*)option
completion:(NIMResourceDeleteHandler)completion;@end群组已读模块@protocol
NIMTeamManager /** * 刷新群组消息已读、未读数量 * * @param
NIMMessage 要查询的消息 * @discussion 消息已读变化后,会通过
NIMChatManager 的代理 onRecvMessageReceipts: 回调给上层 *
刷新的消息必须为群组消息 */- (void)refreshTeamMessageReceipts:(NSArray
*)messages;/** * 查询群组消息回执详情 * * @param NIMMessage
要查询的消息 * @discussion 详情包括已读人数的 id 列表和未读人数的 id
列表 *
查询详情对象不会跟着回执人数变化而变化,如果要获取最新的详情,必须再次调用此接口
* */- (void)queryMessageReceiptDetail:(NIMMessage *)message
completion:(NIMQueryReceiptDetailBlock)completion;@end群组全员禁言接口@protocol
NIMTeamManager /** * 禁言群全体成员 * * @param mute 是否禁言 *
@param teamId 群组ID * @param completion 经验操作完成后的回调 *
@discussion 操作成功后,云信服务器会下发禁言的群通知消息 */-
(void)updateMuteState:(BOOL)mute inTeam:(NSString *)teamId
completion:(nullable
NIMTeamHandler)completion;@end本地反垃圾检测接口@protocol
NIMAntispamManager /** * 本地反垃圾检查器 * * @param option
本地反垃圾检查选项 * @param error 错误提示 * @discussion
此扩展不会漫游到其他端,上层需要保证 NSDictionary 可以转换为 JSON。 *
@return 本地反垃圾检查结果,本地反垃圾列表会在每次登录后同步更新 *
因为网络问题,或者没有登录,都会导致本地反垃圾列表无效的情况,error
中会包含具体出错原因 */- (NIMLocalAntiSpamCheckResult
*)checkLocalAntispam:(NIMLocalAntiSpamCheckOption *)option
error:(NSError **)error;@end变更收到消息的回执接口的变更-
(void)onRecvMessageReceipt:(NIMMessageReceipt *)receipt;为-
(void)onRecvMessageReceipts:(NSArrayAndroid 更新内容新增1.
添加群组已读功能,新增接口:TeamService#sendTeamMessageReceipt:
(消息接收方)发送群消息已读回执TeamService#refreshTeamMessageReceipt:
(消息发送方)刷新群消息已读未读数量TeamService#fetchTeamMessageReceiptDetail:
(消息发送方)获取群消息已读未读账号列表MsgServiceObserve#observeTeamMessageReceipt:
(消息发送方)监听群消息已读未读数量变更IMMessage#setMsgAck:
(消息发送方)构造需要已读回执的消息2. 群组整体禁言:
TeamService#muteAllTeamMember。3.
添加客户端反垃圾功能:MsgService#checkLocalAntiSpam。4.
添加日志导出接口: MiscService#zipLogs。5.
添加客户端删除缓存接口:MiscService#getSizeOfDirCache :
获取缓存大小MiscService#clearDirCache : 删除缓存6.
添加聊天室高优先级消息判断接口:ChatRoomMessage#isHighPriorityMessage。7.
添加在任意位置初始化 SDK 的接口:NIMClient#config,
在Application#onCreate()中配置SDK(仅仅是配置,不影响性能)NIMClient#initSDK,
在UI进程主线程上按需使用的初始化SDK8. 匿名推送功能:
MixPushService#setPushShowNoDetail。Windows(PC) SDK
更新内容新增客户端反垃圾功能SDK提供缓存管理接口(查询、删除),nim_global.h群消息已读功能群组禁言功能Web
SDK
更新内容新增客户端反垃圾客户端提供删除NIM实例缓存的接口群组临时禁言群组消息已读功能web私有化配置微信小程序支持多条websocket微信小程序白名单列表处理新增文档转码功能变更聊天室登录带上重连标记聊天室高优先级消息增加标记下载地址请从以下官网地址下载:

摘要NGINX 官方博客正式宣布 NGINX 支持原生的
gPRC,现在就可以从代码仓库拉取快照版本。该特性将会被包含在 NGINX OSS
1.13.10、NGINX Plus R15 以及 NGINX 1.13.9 当中。引言NGINX
官方博客正式宣布 NGINX 支持原生的
gPRC,现在就可以从代码仓库拉取快照版本。该特性将会被包含在 NGINX OSS
1.13.10、NGINX Plus R15 以及 NGINX 1.13.9
当中(博客原文链接:
已经能够代理 gRPC TCP 连接,用户可以用它:发布 gRPC 服务,并应用 NGINX
提供的 HTTP/2 TLS 加密机制、速率限定、基于 IP
的访问控制以及日志等功能。在单个端点上发布多个 gRPC 服务,使用 NGINX
检查方法调用,将各个方法调用路由到相应的服务上。对一组 gRPC
服务进行负载均衡,可以使用轮询算法、最少连接数原则或其他方式在集群上分发流量。什么是
gRPC?gRPC
是一种远程过程调用协议(gRPC官网:
3.x,基于Netty 4.x +,用于客户端和服务器端之间的通信。gRPC
紧凑小巧,跨多种编程语言,同时支持请求与响应式的交互方式和流式交互方式。gRPC
因其跨语言特性和简洁的设计变得越来越流行,其中服务网格的实现就使用了
gRPC。gRPC 通过 HTTP/2 传输数据,可以传输明文文本数据和 TLS
加密过的数据。gRPC 调用是通过 HTTP POST
请求来实现的,每个请求里包含了一个编码过的消息体(protocol buffer
是默认的编码方式)。gRPC
的响应消息里也包含一个编码过的消息体,并在消息尾部带上状态码。gRPC
不能通过 HTTP 进行传输,而必须使用 HTTP/2,这是因为要充分利用 HTTP/2
连接的多路复用和流式特性。通过 NGINX 来管理 gRPC 服务下面的示例对 gRPC
的 Hello World
快速入门教程进行了修改,用它来创建一个简单的客户端到服务器端应用。例子中提供了
NGINX
的配置信息,而把应用程序的实现留给读者,不过文中还是会给出一些提示。1、暴露简单的
gRPC 服务首先,在客户端和服务器端之间安插 NGINX,NGINX
为服务器端的应用程序提供了一个稳定可靠的网关。然后开始部署包含了 gRPC
更新包的 NGINX。如果要从源代码开始编译 NGINX,要记得把 http_ssl 和
http_v2 两个模块包含进去:$ auto/configure –with-http_ssl_module
—with-http_v2_moduleNGINX 使用一个 HTTP 服务器来监听 gRPC 流量,并使用
grpc_pass 指令来代理 gRPC 流量。像下面的配置那样,在 80
端口上监听未加密的 gRPC 流量,并把请求重定向到 50051 端口上:http {
log_format main ‘$remote_addr – $remote_user [$time_local]
“$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent”‘; server { listen 80 http2; access_log
logs/access.log main; location / { # Replace localhost:50051 with the
address and port of your gRPC server # The ‘grpc://’ prefix is
optional; unencrypted gRPC is the default grpc_pass
grpc://localhost:50051; } }}要确保 grpc_pass
的地址是正确的。然后重新编译客户端,让它指向 NGINX 的 IP
地址和端口。在运行新的客户端时,可以看到与之前一样的响应消息,不过这时
NGINX 会终断和转发事务。这个可以从访问日志中看出来:$ tail
logs/access.log192.168.20.1 – – [01/Mar/2018:13:35:02 +0000] “POST
/helloworld.Greeter/SayHello HTTP/2.0” 200 18 “-”
“grpc-go/1.11.0-dev”192.168.20.1 – – [01/Mar/2018:13:35:02 +0000]
“POST /helloworld.Greeter/SayHelloAgain HTTP/2.0” 200 24 “-”
“grpc-go/1.11.0-dev”要注意,NGINX 不支持在同一个明文(非
TLS)端口上同时使用 HTTP/1 和
HTTP/2,如果一定要同时使用两种版本的协议,需要分别为它们创建不同的端口。2、发布基于
TLS 的 gRPC 服务Hello World 快速入门教程使用的是未加密的
HTTP/2,这样方便测试和部署,但要部署到生产环境就不能这么简单了。可以通过
NGINX 来增加一个加密层:创建一个自签名的证书对,然后修改 NGINX
服务器的配置如下:server { listen 1443 ssl http2; ssl_certificate
ssl/cert.pem; ssl_certificate_key ssl/key.pem; #…}让 gRPC
客户端使用 TLS,连接到 1443
端口,并禁用证书检查——这在使用自签名证书或未经信任的证书时是一个必要的步骤。例如,如果使用了
Go 语言编写的示例,就需要导入 crypto/tls 和
google.golang.org/grpc/credentials,并修改 grpc.Dial() 方法:creds :=
credentials.NewTLS( &tls.Config{ InsecureSkipVerify: true } )//
记得修改地址,使用新的端口conn, err := grpc.Dial( address,
grpc.WithTransportCredentials( creds ) )这样就可以加密 gRPC
流量了。在部署到生产环境时,需要将自签名证书换成由可信任证书机构发布的证书,客户端也需要配置成信任该证书。3、代理加密的
gRPC 服务有时候可能需要在内部对 gRPC
流量进行加密,那么就要修改服务器端应用程序的配置,把原先监听未加密(grpc)连接改为监听
TLS 加密(grpcs)连接。cer, err := tls.LoadX509KeyPair( “cert.pem”,
“key.pem” )config := &tls.Config{ Certificates: []tls.Certificate{cer}
}lis, err := tls.Listen( “tcp”, port, config )在 NGINX 的配置里,需要将
grpc-pass 配置成上游服务器的地址:# Use grpcs for TLS-encrypted gRPC
trafficgrpc_pass grpcs://localhost:50051;4、路由 gRPC
流量如果同时存在多个 gRPC
服务,并且每个服务是由不同的服务器应用程序提供的,那么该怎么办?如果能够将这些服务通过单个
TLS 端点暴露出来是不是更好?在 NGINX
里,可以对服务和它的方法稍作修改,然后使用 location 指令来路由流量。gRPC
的请求 URL 是使用包名、服务名和方法名来生成的。比如这个叫作 SayHello 的
RPC 方法:package helloworld;service Greeter { rpc SayHello
(HelloRequest) returns (HelloReply) {}}调用这个方法就会生成一个 POST
请求,URL 是
/helloworld.Greeter/SayHello,这个可以从日志中看出来:192.168.20.1 – –
[01/Mar/2018:13:35:02 +0000] “POST /helloworld.Greeter/SayHello
HTTP/2.0” 200 18 “-” “grpc-go/1.11.0-dev”要使用 NGINX
来路由流量,可以这样配置:location /helloworld.Greeter { grpc_pass
grpc://192.168.20.11:50051;}location /helloworld.Dispatcher { grpc_pass
grpc://192.168.20.21:50052;}location / { root html; index index.html
index.htm;}6、对 gRPC 流量进行负载均衡那么该如何增加 gRPC
服务的容量,以便提供高可用性?可以使用 NGINX 的 upstream 组:upstream
grpcservers { server 192.168.20.21:50051; server
192.168.20.22:50052;}server { listen 1443 ssl http2; ssl_certificate
ssl/certificate.pem; ssl_certificate_key ssl/key.pem; location
/helloworld.Greeter { grpc_pass grpc://grpcservers; error_page 502 =
/error502grpc; } location = /error502grpc { internal; default_type
application/grpc; add_header grpc-status 14; add_header grpc-message
“unavailable”; return 204; }}当然,如果上游监听的是 TLS 端口,可以使用
grpc_pass grpcs://upstreams。NGINX
支持多种负载均衡算法,其内置的健康检测机制可以检测到无法及时响应或发生错误的服务器,并把它们移除。如果没有可用的服务器,就会返回
/error502grpc 指定的错误消息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

CopyRight © 2015-2020 新萄京娱乐3730-娱乐场官网app下载 All Rights Reserved.
网站地图xml地图