编者按: 本博客出自Linx公司电子商务项目经理Fernando Chaves,描述了公司如何使用Windows Azure为他的客户扩展他的LinxWeb销售点系统。
Linx 是一个26岁的ISV,也是拉丁美洲零售市场的ERP技术领导者。我们在巴西、拉丁美洲和欧洲拥有超过7,500客户和超过60,000销售点(POS)系统安装。我们公司在总部和分部拥有超过1,800名员工,我们的合作伙伴关系网遍及巴西和国外。
LinxWeb是一个white-label B2C电子商务解决方案,我们的客户可以在他们的销售环境中用它作为一个新的POS系统。它与非云端ERP环境的客户集成,可以像传统的POS系统一样管理,同时允许特定的自定义设置,如促销活动。
设置阶段:在Windows Azure之前
在迁移至Windows Azure之前,LinxWeb的操作都是在运行在传统的托管提供商的虚拟机(VMs)上,尽管在理论上这类的部署可以扩展,但是它并不是那么容易和快速实现,并且我们经常需要扩大、新增内存、计算能力或者网络带宽至虚拟机。
LinxWeb保持原来的单租户模式,所有客户拥有他或她自己的部署和环境。自定义设置直接在客户的Web内容文件上完成,这可能导致一些安全问题、质量控制问题和因为自定义设置过度支持请求生成的错误。
在Windows Azure迁移前,web站点对每个处理任务都回应:生成产品图片缩略图、发送e-mail、与第三方系统通信。每个任务都同步完成的,影响电子商务网站最终用户的性能和可用性。
迁移至Windows Azure
当我们决定迁移LinxWeb至Windows Azure时,我们需要一些重构使它兼容于Windows Azure web role无状态性和负载平衡器。
由于每个web请求可以被发送到任何web服务器实例,我们需要具体化会话数据。我们选择Windows Azure SQL数据库作为我们的会话存储。
我们不得不删除所有写在本地磁盘上的文件,因为本地磁盘存储不能在服务器实例间共享。另外,本地磁盘不耐用,不像Blob Storage或SQL数据库那样拥有备份磁盘。本地磁盘被设计为速度和缓存用途,而不是永久存储了。
媒体内容,最初保存至SQL Server(在BLOB列),现在保存在Windows Azure Blob Storage,允许对网站较好的扩展性,因为blob
content被称为Windows Azure Content传送网络(CDN)边界缓存。同时,只有一个blobreference在SQL数据库中,而不是整个媒体对象,我们可以保持我们的SQL数据库规模更小,帮助我们避免单个SQL数据库的存储限制(最大支持150GB)。
由于blob(和CDN)通过URL引用,浏览器现在请求媒体直接转到CDN,绕过我们的web role实例(关闭IIS和数据库负载)。这个修改平均减小数据库75%的规模,也减少了存储开销,因为blob Storage比SQL数据库要便宜得多。我们还看到了我们Web role实例的响应时间改进了,因为相当多的负载从这些服务器拿走。
为了更好地使用环境资源, Windows Azure版本在思想上就是被设计为多租户的,多个客户共享计算机资源,减少托管费用。考虑到一些客户可能需要一个隔离的环境,我们对用户收到专用部署也有一个优惠价格,在这个新版本中,用户不必再更新ASP.NET页面来直接修改网站布局和效果。 他们允许修改存储在Windows Azure Blob Storage中的模板,然后ASP.NET页面处理这些模板,渲染更新html给最终用户。
work role被用来处理后台任务比如生成图片缩略图和发送e-mail。这些任务是队列导向的,使用Windows Azure Queues。这些work role能够对运行着的日程工作回应,沟通的大部分使用第三方系统。为了管理事件处理,我们使用Quartz.Net框架,有一个针对于多个work role实例的运行同步选项。这点很重要:如果一个被设置调度程序被设置运行在work
role中,此调度程序可运行在所有实例中。Quartz.Net确保在任何给定时间内只有一个调度程序实例运行。
一些客户可能也想托管一个公司网站或者一个结合他们的电子商务网站的blob。为了解决这个需求,我们使用WordPress作为我们的博客引擎。WordPress基于PHP,默认的PHP运行库没被安装在Windows
Azure web role或者work role中。由于我们的WordPress博客运行在Windows Azure web role中,我们需要安装必要的PHP组件和WordPress自身。我们使用启动任务和Web平台安装程序命令行,设置IIS上的PHP运行环境。Windows Azure SQL数据库被用来做持久性存储,Windows Azure Blob storage也一样,所以我们安装WordPress的Windows
Azure
Storage插件,用来从用户目录上传文件到blob storage。
总结
对于我们,迁移我们的解决方案到Windows Azure最主要的好处是,它能够简单快速的扩展应用程序。这点让我们专注于客户的业务需求和支持处理一大批来自我们最终用户请求的营销活动。
对于我们的客户,一个最大的好处是他们不再需要担心基础设施和运作的系统管理了。
正如指出的,我们有一些技术难点要解决,但是没有一个是不能克服的:
- 从单个到多个租户迁移
- 从本地存储和SQL存储到blob storage迁移
- Quartz.net跨多个角色实例的任务调度
- 安装PHP运行环境和WordPress
- 重构web请求处理为无状态,跨多个实例伸缩扩展。
我们有能力出来处理这些挑战,并且现在已经有一个有效地应用程序运行在Windows
Azure上。
本文翻译自:
http://blogs.msdn.com/b/windowsazure/archive/2012/06/27/isv-guest-post-series-linx-powers-its-point-of-sale-systems-with-windows-azure.aspx
分享到:
相关推荐
确保内核模块 linx.ko 已加载到您的系统中。 将 linx4py 添加到您的 pythonpath 中,如下所示: export PYTHONPATH= " ${PYTHONPATH} " 或者使用 setup.py 脚本自动安装 linx4py。 python setup.py install #...
服务器匹配获取发布并运行从获取最新的二进制文件运行./linx-client...配置首次运行linx-client时,系统将提示您配置实例url,日志文件路径和api密钥。 $ ./linx-client Configuring linx-client Site url (ex: ...
linux管理,linux进程,linux管程, 以及linux网络管理
linx 常用操作命令。主要操作apache和数据库
LinX是一款基于Intel Linpack数学核心库的稳定性测试软件,和公认比ORTHOS/Prime95还严格的IBT原理基本相同,但不同的是LinX有更强的可操作性,界面设计更美观,选项更丰富,不仅可以自定测试的计算规模以控制测试...
linx 0.6.2cpu多核测试软件,绿色软件,支持32位系统,64位系统
m = LINX(S) 使用化学计量矩阵 S 计算区室模型的每个流的链接重要性指数。 可以使用邻接矩阵代替化学计量矩阵,通过使用随附提供的代码 A2S.m 将其转换为化学计量矩阵有了这个功能。 m = LINX(S,fk,fi) 计算具有...
基于工控通信,用于LINX串口通讯。指令详解用于了解LINX通信使用。
凝思安全操作系统各版本 iso 镜像文件下载 包括: Linx-6.0.80-20180821-amd64-DVD.iso Linx-6.0.80-20191126-amd64-DVD.iso linx-6.0.60.4-2017-09-15-amd64-DVD-1.iso rocky6.0.42.41-x86_64-security-20161201....
该网站是Linx公司的“前端开发人员挑战赛”的产品,它包含一个登陆页面,该页面显示了用户最喜欢的产品列表,还可以帮助他们与网站进行交互。 在这里,您可以找到该项目的两个屏幕的实时预览: 入门 您可以通过在...
linx-mongodb x86 数据库
linx 命令手册,多 html 版本,附原 chm 文件。命令较全,还不错,就是例子太少。
鸟哥的LINX私房菜(服务器版)分卷2 密码是:linuxren
演示版您可以使用演示看到它的外观: : 客户群官方的CLI: linx-client-非官方Android: LinxShare-| CLI: golinx-特征显示常见的文件类型(图像,视频,音频,降价,pdf) 通过就地编辑显示语法突出显示的代码记录...
linx下gcc的安装,适用于linux各个本版
LinX-0.6.5 支持多核CPU 完爆SuperPI
linuxfun linx函数库 linux函数大全 网页形式,比其他的都要全,我经常用它哦,同学们
linx 学习基础命令 1、rm 删除文件(需要确认)() 2、rm -r 递归删除(每个文件都要确认后才删除) 3、rm -rf 不经确认,直接删除(root目录下尽量别用)
Enea LINX is an open technology for distributed system interprocess communication which is platform and interconnect independent, scales well to large systems with any topology, but that still has the...
清华大学用的基于linux内核的各种详细实验及源代码