摘要即时通讯云网易云信于2018年01月04日发布4.6版,该特性将会被包含在 NGINX OSS

摘要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 指定的错误消息。

摘要即时通讯云网易云信于2018年01月04日发布4.6版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为
4.6版,更新时间为:2018年01月04日。iOS
更新内容新增新增在后台自动执行重连开关@interface NIMSDKConfig :
NSObject/** * 是否禁止后台重连 * @discusssion 默认为
NO。即默认情况下,当程序退到后台断开连接后,如果 App 仍能运行,SDK
将继续执行自动重连机制。设置为 YES
后在后台将不自动重连,重连将被推迟到前台进行。 *
只有特殊用户场景才需要此设置,无明确原因请勿设置。 */@property
(nonatomic,assign) BOOL
reconnectInBackgroundStateDisabled;@end新增聊天室历史记录拉取可以按类型筛选字段/**
* 检索服务器历史消息选项 (服务器) */@interface
NIMHistoryMessageSearchOption : NSObject/** * 查询的消息类型 *
@discusssion 消息类型组合,默认为 nil ,搜索全类型。
此参数只对聊天室会话有效 */@property (nonatomic,copy)
NSArray<NSNumber *>
*messageTypes;@end易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则,NIMAntiSpamOption新增字段
businessId。/** * 反垃圾选项 * @discussion
这个选项用于配置易盾反垃圾,设置 enabled 为 YES (默认为 NO)
后该消息进投递到易盾系统进行反垃圾检测 (需要开启易盾服务)
*/@interface NIMAntiSpamOption : NSObject/** *
用户在易盾配置的额外反垃圾的业务ID */@property
(nullable,nonatomic,copy) NSString
*businessId;@end新增聊天室队列权限修改,NIMChatroomUpdateTag中新增字段
NIMChatroomUpdateTagQueueModificationLevel修正聊天室缓存用户扩展信息,保证掉线重连后不清除Android
更新内容新增1. 易盾反垃圾支持对单条消息配置对应的反垃圾业务规则。2.
新增支持海外推送 FCM 以及魅族推送。3. 支持配置聊天室队列管理权限。4.
支持群管理员撤销其他人消息。5. 支持视频消息获取远程缩略图 url。6.
聊天室历史记录拉取可按类型筛选。变更1. 修复酷派偶现崩溃问题。2.
接口变更:List<NimRobotInfo> getRobotInfo(List<String>
accounts);改为List<NimRobotInfo>
getRobotInfoList(List<String>
accounts);3.MessageNotifierCustomization新增消息撤回通知文案自定义接口:/**
* 定制消息撤回提醒文案 * @param revokeAccount 撤回操作者账号 * @param
item 被撤回的消息 * @return */String makeRevokeMsgTip(String
revokeAccount, IMMessage
item);4.ChatRoomPartClearAttachment附件内容变更getContentMap()返回由Map<String,Object>变为Map<String,
String>getChatRoomQueueChangeType()返回ChatRoomQueueChangeType.PARTCLEARWindows(PC)
SDK
更新内容新增群主或群管理员可以撤回其他群成员发送的消息的功能用户配置的对某单条消息另外的反垃圾的业务ID的功能视频消息主动获取封面功能NOS域名迁移NOS加速地址,上传、下载地址等统一配置聊天室历史记录拉取可以按类型筛选功能聊天室队列权限可配置聊天室更新用户信息后,断线重连进入聊天室时,相应信息依旧还在的功能Web
SDK
更新内容新增聊天室队列管理权限可配置聊天室历史记录拉取可以按类型筛选群管理员可以撤回其他人发的消息易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则变更WebSocket链路若因网络状态不佳,悄悄被踢,将自动重连,不再由上层做处理WebSocket握手重连优化,清除实例接口下载地址请从以下官网地址下载:

摘要2017年12月15日上周五,在刚刚结束的“2017中国大数据产业年会”上,腾讯移动推送(信鸽)荣获“金创奖-最佳大数据应用奖”。基本内容“2017中国大数据产业年会”由新华网、中国信息通信研究院、中国社科院信息化研究中心主办,在北京唐拉雅秀酒店举行。本届大会以“大数据助力中国新经济”为主题,汇聚了大数据行业的各个“产学研”大咖,共同探讨数据产业前沿课题,应对“大数据+”带来的机遇与挑战。腾讯移动推送-信鸽(下文简称为信鸽)以其过硬的技术实力、完善的数据分析功能以及在大数据领域创新应用获得评委的高度好评,并最终斩获最佳大数据应用奖。腾讯信鸽的定位腾讯信鸽是国内领先的消息推送服务厂商。依托腾讯多年的海量数据解决方案经验,以及业内领先的技术能力,信鸽提供及时、高效、精准的消息推送服务,能够实现每秒百万级推送量,领先业界平均水准数倍。从成立之日起,信鸽就致力于为移动开发者提供最优质的服务,减轻不必要的开发成本,让开发者专注于核心功能。为了给开发者更方便快捷的服务,信鸽整合了腾讯内部优质技术资源与多年数据运营经验,提供一站式的消息推送解决方案。腾讯信鸽的技术优势针对用户需求,信鸽进行了多轮的技术优化。在海量数据的压力下,信鸽从硬件、操作系统、协议栈、架构等多角度挖掘单机性能,提高设备资源利用率,实现了后台推送速度提升100%以上,实现了亿级推送10分钟内完成,有效支持用户业务需求。此外,依托信鸽强大的设备覆盖能力,提出了业内独创的双Service保活机制,能够帮助开发者触达近乎全量的用户,大大提升推送的抵达率。用户接入信鸽之后,推送抵达量平均提升5%以上。另外,信鸽还提供多种灵活的推送方式,结合数百种多样化、精准的用户标签,对不同的用户群推送不同的内容。数据表明,使用精准标签推送的用户打开率是全量推送的4倍。腾讯移动推送(信鸽)官网信鸽官网:

相关文章