我正在建立一个网络应用程序,并有几个快速的问题.从我所了解的,开始构建应用程序时,不要担心可扩展性,只能在流量增加时开始担心.然而,这是我的第一个网络应用程序,我不太确定我应该采取一种方法,我以一种特殊的方式设计事物,然后“修复”它们.我一直在阅读关于人们如何从一个星期或两个月内收到数百万用户的应用程序开始的故事.不是我会面对同样的情况,但我不禁要想,这些人怎么做呢?

目前,我在Lunarpages上购买了一个共享主机帐户,让我开始构建和测试应用程序.不过,我有兴趣通过使用云,例如亚马逊的EC2,以可扩展的方式学习如何构建相同的应用程序.从我的理解,我可以看到几个组件:

>有一个负载平衡器首先接收请求,然后决定在哪里路由每个请求
>然后,该请求由服务器副本处理,然后服务器副本处理请求并更新(如果需要)数据库,并将响应发送回客户端
>如果出现类似的请求,那么像memcached这样的缓存机制就可以进入图片并从缓存返回对象
>一个处理数据库复制的黑盒子

具体来说,我正在努力做以下事情:

>设置一个负载平衡器(我的作业揭示HAProxy是一个这样的负载平衡器)
>设置复制,以便数据库可以同步
>使用memcached
>配置Apache以使用多个Web服务器
>分区应用程序使用Amazon EC2和Amazon S3(我的应用程序将需要大量存储)
>最后,如何避免在使用Amazon服务时烧毁自己?因为这只是一个学习阶段,我可以用简单的负载平衡器和复制的2-3台服务器,但是我想避免不必要地付钱.

我可以找到关于个人主题的资源,但无法找到从大局开始的东西.有人可以帮我开始吗

就个人而言,我认为你应该考虑你的应用程序如何最初扩展 – 否则你会遇到问题.

我不是说你最初需要建立一个多服务器系统,但是如果你以后需要做的话,请注意现在的问题.

根据我的经验,这包括:

>会话除非您使用“粘性”负载平衡,否则您必须具有某种方式在服务器之间共享会话状态.这可能意味着将会话数据存储在共享存储或DB中.>文件上传和复制.如果您允许用户上传文件,或者拥有允许您上传图像/文档的CMS,则需要满足这些文件还需要找到集群中其他节点的方式.但是,如果您已经下载了上述共享存储路由,则应该覆盖它.> DB可扩展性.如果您使用传统的DB服务器,您可能需要考虑如何在该级别实现可扩展性.这可能意味着编码您的应用程序,因此您可以使用一个连接字符串进行读取,另一个用于写入.然后,您可以使用一个主节点来实现复制,处理插入/更新将更改级联,以便只读取处理大部分工作的节点.>中间件您甚至可能想要实施某种面向消息的中间件解决方案,以完全切断业务逻辑功能,这将为您提供如何希望在将来扩展业务逻辑层的灵活性.虽然最初这将是很多并发症和工作,没有大量的回报.

可扩展性101:如何使用PHP设计可扩展的Web应用程序?的更多相关文章

  1. 可扩展性101:如何使用PHP设计可扩展的Web应用程序?

    我正在建立一个网络应用程序,并有几个快速的问题.从我所了解的,开始构建应用程序时,不要担心可扩展性,只能在流量增加时开始担心.然而,这是我的第一个网络应用程序,我不太确定我应该采取一种方法,我以一种特殊的方式设计事物,然后“修复”它们.我一直在阅读关于人们如何从一个星期或两个月内收到数百万用户的应用程序开始的故事.不是我会面对同样的情况,但我不禁要想,这些人怎么做呢?

  2. c# – IIS 7 – .NET可扩展性和ASP.NET之间的区别

    嗨伙计们,在Windows功能控制面板小程序中,在Internet信息服务下–>万维网服务–>应用程序开发功能有两个选项:“.NET可扩展性”和“ASP.NET”.这两个选项有什么区别?如果我正在开发简单的ASP.NETWeb应用程序/服务,是否需要.NETExtensibility选项?我谷歌的条款,并提出了这个链接:http://forums.iis.net/t/1146942.aspx这个链接让我很困惑,因为响应说要测试.NETExtensibility,你创建一个简单的ASPX页面,并尝试加载它.

  3. javascript – 如何在移动Safari中提交表单后重置缩放,同时保持用户可扩展性?

    当用户从iPhone/iPad登录我的应用程序时,Safari(帮助)放大,同时用户填写用户名/密码字段.但是当提交表单并将其登录时,我们不会重新加载页面,因此永远不会重置缩放.所以应用程序总是以放大的比例开始.我已经查看了JeremyKeith’ssolution,它成功地重置了缩放,但也阻止了用户将来进行缩放/缩放,因为他设置了视口的最大比例.像这样:有没有人看到一个很好的解决方案,在表单提交后重新设置,之后没有冻结视口?

  4. java – 可变或不可变类?

    我已经阅读了一些设计书,不可改变的类提高了可扩展性,并且尽可能地编写了不可变的类.但是我认为这种不变的类增加对象的扩散.那么进行不可变类还是更好的去静态类,以提高可扩展性?

  5. html5 – 服务器可扩展性 – HTML 5 websockets和彗星

    许多Comet实现像Caplin提供服务器可扩展的解决方案。如何与任何Web服务器上的HTML5websockets进行比较?任何人都可以点我任何HTML5websockets统计数据?对于这种情况,HTTPStreaming和WebSocket之间没有根本的区别–两者都是在一个打开的套接字上写入消息,只有很少或没有头或开销。其中WebSocket应该在有更多客户端到服务器消息的情况下改进HTTP流传输。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部