适用范围本文主要针对中小型互联网公司,尤其是移动端APP或者PC端的后台架构,基本可以支撑5万个日常活动。本文将对可能用到的相关技术进行技术选型说明,并介绍技术架构。技术指标先说一些技术指标的计算过程,可以作为其他同学QPS的参考。如果是5万日活跃用户,使用集中在每天4小时,每个用户产生100个左右的请求。平均下来,我们的系统大概应该支持请求是:50000*100/(4*60*60)=350qps/s业务数据业务量,我们是新闻业务,可能还有其他业务,比如游戏,购物商场等,基本上每天新增的业务数据都会在同一个数量级,每天10000条。另外,与用户相关的信息也是比较大的一块,比如用户订阅等行为。总共有50000个用户,保存相关信息可能需要100条左右的数据。缓存大小主要业务数据和用户相关的热点数据在缓存中限时保存,需要5G左右。LogSize用户日志和Request日志。每天约3克。整体技术架构是一个小公司。我们基于阿里云构建它。解释一下图中的内容和技术选择:负载均衡选项:SLB,Nginx。SLB需要付费,但是比较便宜,有保障,不会挂。但是可配置的很少,Nginx不能根据域名映射到ip。没有缺点,需要一定的知识。建议:SLB+Nginx,SLB绑定域名作为统一入口,然后在每台服务器上搭建Nginx.CDN缓存静态文件等。七牛和阿里的都可以。七牛要用的时间长一点,各种图片处理接口有待完善。阿里的CDN好一点,但是没有不安全的访问方式,访问的灵活性差一点。图像处理较弱。目前分布式调用框架是ZK+dubbo。ZK+Motan,ZK+dubbox,edas。阿里的服务治理框架dubbo不再维护,切换响应有点慢。dubboX,当当网基于dubbo,还在维护中。值得推荐。Motan,微博的服务治理挖矿建设,刚刚开源,需要学习,推荐。Edas、阿里云服务要钱,而且侵入性很大。不推荐使用MQ。选项有:ActiveMQ、rocketMQ、robbitMQ、Kafka各有优势,但考虑运维难度,推荐rocketMQ。Redis用于缓存,自建成本有点高。需要codis、分片、集群、主从等,很麻烦。推荐直接使用阿里的数据库主要是基于读写分离和主从复制的考虑。目前阿里的DRDS可以自建和选型。DRDS要花钱,而且成本高。不用自己搭建,不用中间件,直接写1写2只读,然后配置读写分离的数据源,内网SLB读取集群。解决这个问题。搜索建议ELK可以自动同步数据库。除了搜索引擎的功能外,它还可以做日志搜索和系统监控。一些典型的业务场景说明,将业务底层做成SOA模块,通过分布式调用框架对外提供服务。后期会涉及到SOA到微服务的转型。单独做一个小系统跑定时任务,把热点数据放在缓存中,然后用MQ更新缓存日志等数据。有需要的可以考虑最后的Mongo
