前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网站平台架构演变史(一)

网站平台架构演变史(一)

作者头像
风间影月
发布2018-04-04 17:11:07
8560
发布2018-04-04 17:11:07
举报
文章被收录于专栏:BeJavaGod

朋友公司的产品已经做了11个年头了,在餐饮业可以说数一数二,网站架构从原始的单一应用一直演变至今,已经十分庞大了,不说完美,但是可支撑的业务量已经十分强大。最近受邀参与了他们的架构分享会,在此我也总结一下大致内容,一方面当做会议纪要,一方面也总结分享给大家看看。

先看一下初期架构,前期网站平台刚刚建立,对于访问量并发量来说并不会很高,所以采用如下的架构即可,虚线框代表服务端可以做一个主备集群,如果挂了可以使备胎立刻顶上,当然这个备胎对于有些创业小公司可以拿掉,毕竟多一台服务器也是成本

需要注意的事,前期我们并没有谈及高可用以及高并发。要这么做,那么服务器以及运维成本都要上去。

当服务端进行高可用设计,部署为集群的情况下,用户状态这个session改如何保证?

比如用户正在访问网站,session是有服务端A来提供,在nginx中可以配置不同服务器的访问权重,突然服务端A变为了服务端B或者C,那么用户session就丢失了,所以我们的session需要做粘性或者非粘性的同步,或者改为无状态session都行。

粘性和非粘性,这个可以通过tomcat来进行配置,经过测试同步session所需要的时间在半分钟-2分钟,尤其是在多集群情况下,这样的性能十分低下(参考原文链接),用户更不可能在客户端等待那么久,所有我们一般都会使用缓存来控制session使之成为无状态的。

退一步讲,我以前的公司至今都是采用cookie来存储用户的信息的,这样后端几乎没什么压力,但是对于一些人来讲,cookie总归是不安全的,但是我还是挺喜欢cookie的,如果真有人来看你的cookie那去看呗,反正加密的。因为人家淘宝初期也是这么做的

(我们目前的做法采用的是缓存+cookie中存放加密token来实现的)

那么再来看看这样的架构,朋友公司的餐饮系统(不是外卖,非外卖三巨头),在中饭以及晚餐时候的并发是特别高的,尤其是写操作,十分多,业界著名的12306在前期几乎是处于崩溃的状态,连用户都无法注册登录,主要是因为数据库的写操作出现了大并发,同时又有大量的用户在读,所以咯。再此我们要做的就是进行读写分离,可以自己实现,或者通过中间件比如mycat来做都行。如果你的电商平台设计到库存,那么读写分离还是不够的,毕竟读写库同步是需要时间的,写入的时候库存就应该减少,同步需要时间,而其他用户看到商品的库存的时候是有滞后的,所以在这里就需要引入缓存

对于读操作,很多时候可以把一些冷资源,或者说是静态的不怎么变化的数据放入缓存,这样的话可以大大提高读的并发性。

那么热资源怎么办?经常变化的数据用户也要读啊,那么在这里就要引入搜索引擎的技术,比如solr,elasticsearch

sorl和ES还是有比较大的区别,如何选择?如果索引数据是定时更新,对于用户来说实时性需求不是很大,那么使用Solr;如果索引需要事实更新的,那么就乖乖用ES吧(关于ES,过段时间空了会做一套教程)

大致先整理这么多,下篇具体讲讲数据库这块。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BeJavaGod 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档