微信号:infoqchina

介绍:有内容的技术社区媒体

Q新闻丨从HTTP到MQTT:……;Visual Studio 2017 RC版发布;Microsoft开源JDBC驱动和……

2016-12-03 09:00 Q新闻

编辑丨小智

本周要闻:


从HTTP到MQTT:一个移动后端案例概述;Visual Studio 2017 RC版发布;Microsoft开源JDBC驱动和Maven支持。


NEWS

从HTTP到MQTT:一个移动后端案例概述

在基于位置服务的移动应用领域,移动设备端和服务端之间总是存在大量的交互。设备向服务端发送它的位置信息和其它设备信息,服务端接收这些数据,对它们进行处理,并返回给设备端一些命令。设备端根据这些命令执行一些操作,比如GPS数据收集的和发送频率等。

设备端和服务端之间可以通过多种通信协议进行交互,比如HTTP(同步)或者基于消息传递的异步协议。因为移动网络的不稳定性,在选择通信协议时要综合考虑它的稳定性和性能。同时,考虑到移动设备对电池使用时间的敏感度,最好能够选择一个相对比较节省资源的协议,这样可以减少对电池的消耗。

HTTP是一种同步无状态的协议,不支持推送,设备端需要通过轮询模拟推送,反复的轮询需要耗费额外的资源。相比之下,另一种基于消息传递的协议MQTT在这种情况下似乎更有优势:

  • MQTT可以保持设备与服务器之间的长连接,避免反复的轮询,减少资源消耗,所以更加省电

  • MQTT可以在设备和服务器之间建立双向连接,从而可以使用推送

有一个基于位置服务的移动项目,最开始使用的是HTTP协议,但是基于上述的原因,需要使用MQTT来替换HTTP。下面来看看如何实现这个架构的演变。

首先,在EC2上安装一个Mosquitto代理。设备端把原先HTTP里的消息头和消息体合并到一个MQTT消息里,并发送到Mosquitto代理的一个主题上。后端的API端点对这个主题进行订阅,然后处理接收到的消息。API服务对消息进行处理后,把相应的响应消息发回Mosquitto代理,再推送给设备端。

不过在有多个API服务器的情况下,存在重复处理消息的问题。因为多个API服务器同时订阅相同的主题,它们会收到一个消息的多个拷贝。为了解决这个问题,在系统里引入了AWS的IoT。AWS IoT在它的内部使用了MQTT代理,同时包含了一个强大的规则引擎,可以利用这个引擎对Mosquitto的消息进行处理,比如把它们保存起来,发送通知或者使用lambda函数处理消息的响应。不过这里需要先把Mosquitto和AWS IoT桥接起来,这样消息就可以进入到AWS IoT。然后使用lambda函数对消息进行处理,抽取消息里的消息头和消息体,最后调用后端的HTTP API服务。

使用这套架构会涉及到:

  • QoS - MQTT提供了三层QoS。这个是非常重要的,因为在底层网络不是很稳定的时候,MQTT仍然能通过重试等手段保证消息可以被正确送达。

  • 消息保留 - MQTT可以为每个主题保留最后一个消息。这对客户端来说,可以反应主题的状态。

  • 处理MQTT消息 - 设置一个Mosquitto代理并让消息流入这个代理是很容易的,但因为缺少第三方包,要让一般的规则引擎来出来这些消息有点棘手。所以最后选用了AWS IoT自带的规则引擎。

  • 日志 - 需要对Mosquitto的日志进行捕捉,并保存起来,方便监控和问题定位。可以使用remote syslog来把日志传输到Papertrail。

除了服务器端,在客户端也需要使用MQTT的客户端包。MQTT有各种语言客户端,并支持Android、iOS平台。

本文编译:薛命灯

NEWS

Visual Studio 2017 RC版发布

Microsoft正式发布了Visual Studio 2017(早先被称为 Visual Studio “15”)的首个候选发布版(RC)。为了解决开发人员需要同时运用Web、移动端和桌面应用开发中多种多样技术的问题,该Visual Studio新版本在文件规模上有所增加。

这次发布的是VS2017的第六个预览版,其构建是基于数月前就被披露而窥见的新特性。在该候选发布版中提供了良好改进的新编辑器,例如“Go To”特性能够跨多种开放的解决方案实现导航功能,用来定位文件、类型、方法及其它代码构件。此外,本次发布中还演示了VS2017对EditorConfig功能的支持。

EditorConfig是一种用于定义可跨编辑器使用样式的格式:

http://editorconfig.org/

在该版本中,代码调试功能也具有了多处改进。其中包括:

  • “运行至点击处”(Run to Click)功能替代了临时断点设置。该功能在编辑器中呈现为与代码同行的“Run-to-Click”图标,指示了程序将执行到的地点。

  • “添加到过程过滤器”(Attach to Process Filter)功能。该功能简化了在打开的过程中查找应被调试的特定过程的操作。

VS2017安装程序会检测在系统中是否已安装了任一VS2017(VS15)预览版,并在自身安装前删除它们。该版本整体已经具有了系统上线许可,尽管其中的一些组件依然是预览的(包括.NET Core、Xamarin、Python和与数据科学相关的一些工作任务)。这意味着该版本可用于生产环境中。但是和其它任何预发布软件一样,在关键环境中还应慎重安装。

Microsoft当前提供了三个公开可获取版本(社区版、专业版和企业版)的基于Web的安装程序。还给出了--layout选项以支持离线的安装(例如:vs_Community.exe --layout C:\offline)。应注意安装的目标目录必须在下载文件前就已经存在。有意思的是,如果在系统中同时安装了多种VS2017版本(例如同机安装了专业版和社区版),点击开始菜单中的快捷方式将会加载的最后安装的版本。为避免该问题并加载所需的程序版本,只能通过浏览特定版本程序的安装目录。

本文翻译已获授权,原文链接:

https://www.infoq.com/news/2016/11/vs2017RC

本文译者:Rays

NEWS

Microsoft开源JDBC驱动和Maven支持

近日,微软项目经理Andrea Lam在开发者社区宣布针对SQL Server的 Microsoft JDBC驱动程序开源。Microsoft JDBC驱动程序是一个Type 4 JDBC驱动程序,它通过标准的JDBC应用程序接口提供数据库连接支持。Microsoft此次开源的目的是期望从社区获得更快的反馈,从而加快开发节奏,为Java开发人员需要支持的场景开发更多新功能。详情可以查看公告视频。

此次开源的内容包括:

  • 在GitHub上基于MIT许可证发布了Java源代码。开发者可以据此参与到源码的开发中。

  • Maven和Ant构建脚本。开发者可以据此构建自己的jar以支持JDBC 4.1规范(用于JRE7)或JDBC 4.2规范(用于JRE8)。

通过开源,Microsoft已经在Maven中央仓库上提供了相关驱动程序,包括两个 jar,分别用于支持JRE7和JRE8,版本分别为“6.1.0.jre8”或“6.1.0.jre7”。将下面的代码添加到POM文件中就可以完成依赖项的设置,将JDBC驱动程序添加到Maven项目中。

  <dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>

通过该JDBC驱动程序开发者可以连接到任何地方的SQL。可以使用它连接SQL Server(内部的或云上的)、Azure SQL数据库和Azure SQL数据仓库。该JDBC 驱动程序支持的特性包括:

  • 始终加密

  • Azure Active Directory身份验证

  • 表值参数 国际化域名(IDN)

  • 参数化查询的扩展支持

  • 批量复制

  • 支持到AlwaysOn可用性组的透明连接

最后,Microsoft还为该驱动提供了完善的在线文档,示例代码和构建说明,如果想了解更多信息,可以参见GitHub上的使用说明:

https://github.com/Microsoft/mssql-jdbc

本文编译:孙镜涛

今日荐文

点击下方图片即可阅读

腾讯QQ团队开源分布式后台毫秒服务引擎全解析:

引擎架构、RPC、灰度……


喜欢我们的会点赞,爱我们的会分享!


 
InfoQ 更多文章 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度…… 给我一个理由,送你一本好书丨微服务设计、Docker、Go并发编程、数据架构...一网打尽 微服务:Java EE的拯救者还是掘墓人? 草根 CTO 创业1年交作业:这个职位跟技术总监有啥不一样? 替代键盘输入的大趋势:语音输入法与其背后的技术解析
猜您喜欢 冬至 —— 你咋过的? 微信多点登录与QQ消息漫游架构随想 Android和iOS开发中的异步处理(四)——异步任务和队列 【视频】►神秘的Ω(网络安全网警微电影) 2017年放假安排公布:除夕放假 中秋国庆一共连放8天