在交付连接设备应用程序时需要考虑的事项 – Windows Azure 来救援 (EN)





0/5 (0投票)
我们应该如何充分利用 Windows Azure 来服务互联设备。
目前一个非常重要的领域是为互联设备开发应用程序,例如 Windows Phone、Windows 平板电脑等。
一个重要的因素是,我们目前越来越依赖无线通信,因此了解无线通信的现状非常重要。
根据 AT&T 的数据,“我们在 2015 年前 5 周的网络数据传输量,相当于 2010 年全年的数据传输量”。
此外,目前有几个已知的拥塞因素正在影响无线通信,例如
- 拥有智能手机并消耗数据、上传和下载照片和视频的订阅者越来越多
- 频谱 + 蜂窝塔 + 天线 + 家庭用户
- 移动运营商的带宽限制
- 服务器和目标设备之间所有通信的延迟,经过蜂窝塔、回程网络、互联网、防火墙等
因此,考虑到这一点,非常重要的是,我们作为开发人员不能再继续认为我们可以像以前一样开发我们的应用程序和服务,而不考虑这些与网络相关的主题,因为这将极大地影响我们解决方案的用户体验。一个重要的注意事项是,用户体验 (UX) 不仅与用户界面 (UI) 相关,就像一些开发人员试图认为的那样,它远不止于此。它实际上是关于在使用我们的应用程序时获得极佳的体验。
因此,为了开发出出色的互联设备应用程序,并支持数百万个设备,我们需要考虑规模。
我们可以扩展应用程序的一些例子是
- 构建几乎没有人接触的数据库,因为我们真的不应该让每个设备都连接到我们的数据库上运行;相反,我们应该真正构建多层应用程序,将这些设备与数据库隔离开来,通过这样做,我们正在减轻数据库的压力,同时也能够扩展真正让我们访问数据的服务
- 将数千个 Web 服务器部署在商品硬件上,通过横向扩展它们的应用
- 复制数据
- 横向扩展
- 在边缘使用 NoSQL 数据库
- 使用小表共享我们的数据,以便快速访问
- 在每一层放置负载均衡
- 在内存分布式缓存中使用数百 TB 的数据(例如,Facebook 使用 MemCache,并且在 memcache 中有大约 300 TB 的数据)
- 使用预编译元素,因为编译很慢(例如,Facebook 使用 PHP,因为他们认为这对他们来说非常有效率,但就编译而言,它效果不佳,所以他们创建了一个团队来创建一个 PHP 到 C++ 编译器,以便获得更好的性能)
- 使用 MapReduce 模式并行分析“大数据”
正在这样做的一些应用程序有 Bing、Facebook、Twitter、Google、Zynga 等。
为了实现这种规模,我们有 Windows Azure。但我们应该怎么做才能充分利用 Windows Azure 来服务互联设备呢?
- 横向扩展。这在 Windows Azure 中很容易,因为我们可以定义我们想要的特定角色的实例数量
- 设备永远不应该接触 SQL Azure。相反,我们应该使用
- 在出站数据方面 - 工作者角色将出站数据从 SQL Azure 复制到 NoSQL Azure 表存储
- 在入站数据方面 - 工作者角色将入站数据从 Azure 队列移动到 SQL Azure
- 使用分布式缓存,在 Windows Azure 中,这由 AppFabric 缓存处理
- 做无线高效的服务。例如,使用公开 REST + JSON WCF 服务的 Web 角色非常有趣,因为它节省了消息大小,通过这样做,节省了时间和金钱
- 同样重要的是,让我们的设备缓存数据并在离线状态下工作。并非所有事情都应该“实时”和基于“实时”数据完成。不要给无线连接施加压力。
我希望这能帮助您更好地思考您的互联设备应用程序。