今天讲点关于咱们公司技术架构演化历程,本人在公司还没正式成立的时候就来了,在此期间有幸经历并参与了公司技术架构的屡次升级的改造工做,也很高兴能见证一个公司的发展历程,从中也学到了不少东西。好了废话不说了,开喷:算法
1、初始阶段 :网站发展初期,咱们的架构是什么样子的呢?下面用一张图还说明:数据库
看着图来介绍下,咱们初始阶段的网站技术架构,固然看着也不错了,开始阶段就用了这么多技术思想,感受挺不错吧,用了反向代理、用了集群、用了分布式缓存、用了独立的文件服务器和独立的数据服务器,架构看起来貌似不错。可是随着用户访问量的增长,逐渐发现流量高峰期的时候咱们的响应时间老是很慢,甚至有几回直接挂了,主要是访问数据库过于频繁,由于读写操做都是操做一个库,而咱们只有一个库,以后呢,咱们作了数据库读写分离,写请求走主库,读请求走读库,解决了数据库链接数不足的问题。缓存
2、发展中期:网站发展中期,随着用户访问量的不断递增,个人技术架构发展成什么样子了呢?入下图所示:服务器
随着流量的增大,发现读写分离已经不能知足咱们的要求,写库,逐渐出现瓶颈,读库也由于愈来愈多的人操做,从而也开始变慢;而后咱们开始升级咱们的架构,先是按业务功能拆分代码,独立部署,而后抽出公共服务,作分布式部署,即所谓的soa服务化;由于服务化以后呢,不一样业务使用不一样的数据库,即所谓的垂直分库,后来呢 针对部分业务,咱们又作了分库、分表技术,经过这些技术手段,咱们解决数据库因流量大二致使请求响应慢的问题。架构
3、发展后期:网站发展后期,咱们的技术架构各方面都逐步完善,那到后期咱们的技术架构是什么样呢?入下图所示:异步
到后期,咱们有作了不少的技术改造,前后用了搜索引擎elasticsearch,在写数据的时候同时把数据写到es中,供其它应用查询使用,这样咱们的查询数据就不用操做数据库了!在后来,咱们在程序中各类作缓存,把凡是可降级的接口,均走本地缓存或者远程缓存服务、把非关联的服务作异步并行化调用,从而达到加快服务请求的目的,又经过zookeeper的监视器watcher功能作了统一配置管理服务!!!!写到这里有点累了,用到的技术要点太多,只能简单说下,具体使用每一个技术都是为了解决项目中遇到的一些实际问题,上边说大的技术就是咱们目前的技术架构,固然还有一些像中间件的技术、排序算法、大数据分析、实时报表等技术,还有网关等等都给略过了,等有时间,我在详细说下每一个细节,谢谢!!!!!!elasticsearch