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

朋友公司的产品已经做了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,过段时间空了会做一套教程)

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

本文分享自微信公众号 - BeJavaGod(wxleechenxiang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

理论联系实际 | 自动化运维构建之旅-第二篇

前言: 前段时间,笔者集中发布了自动化运维的一系列文章,偏重于理论和落地方法的讨论,接下来一段时间,笔者将会陆续介绍Ansible Tower的功能演示。为了...

41040
来自专栏开源项目

Docker容器的自动化监控实现

本文介绍了一种针对 Docker 容器的自动化监控实现方法,旨在给 Docker 运维体系的建立提供相关的解决方案。 ? 1 前言 2016年对于网易杭州研究院...

49060
来自专栏云计算D1net

公共云:战略成功的鲜活经验

公共云正快速成为具有前瞻性的公司的战略工具。IT领导者分享他们的经验,并向寻求迁移到公共云服务的首席信息官提供建议,以推动创新、敏捷性和收入增长。 ? 云端作为...

37860
来自专栏马哥教育

零基础到精通Linux,从这篇文章开始

正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

678100
来自专栏AI研习社

如何在微服务架构下构建高效的运维管理平台?

黎明带领团队自主研发了全栈 DevOps 运维管理平台—EasyOps,是目前行业领先的智能化运维管理平台。作为前腾讯运维研发负责人,黎明主导了多个运维系统研发...

60990
来自专栏织云平台团队的专栏

青铜到王者:AIOps 平台在腾讯的升级之路

在海量运营方法论的指导下,运维团队构建了体系化的运维能力,为众多产品保驾护航。

4.5K110
来自专栏大魏分享(微信公众号:david-share)

硬功夫来了 | Ansible Tower批量实现Linux系统标准化

本视频对应构建运维自动化架构中->基础架构管理层->运维自动化平台。 ? 视频一:Ansible Tower管理Windows演示 Ansible Tower管...

40940
来自专栏不想当开发的产品不是好测试

大坑记录 - shell脚本删除操作

背景 jenkins执行去执行shell命令,其中引用了一些jenkins的变量,如${WORKSPACE}这种,因为每次执行jenkins比较慢,于是想复制脚...

38980
来自专栏开源项目

码云推荐 | 运维脚本工具库 kjyw

快捷运维kjyw,运维脚本工具库,主要功能实现快速安装nginx、mysql、php、redis等,运维经常使用的脚本。 ? 项目简介 ? 快捷运维 kjyw,...

385100
来自专栏织云平台团队的专栏

AIOps线下沙龙回顾

前言 近年,人工智能和机器学习不断发展,传统的IT运维,也从自动化运维逐渐升级到未来的智能化运维时代。得益于此,AIOps应运而生,也就是基于算法的IT运维(A...

498100

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励