任何服务器端的架构设计,都是性能、一致性和成本三者的权衡。从我在目前的大规模互联网视频公司的负责APP服务器端的角度来讲,我主要关注以下几个点:
业务、可靠性、性能、可维护性
一、业务
框架上保证业务的快速迭代,在性能要求不高的情况下,同步架构会比异步架构更为简单,协程架构则兼具有开发简单和性能较高的特点。
二、可靠性
保障无重大故障。
1.接口层面
当后端服务异常时,能通过降级解决问题;接口异常时,能够通过客户端本地缓存接口问题。降级手段有使用旧数据替换不能使用的新数据、使用小数据替换不能使用的大数据。
2.缓存层面
memcached缓存结构上,使所有的key尽可能的分布均匀,避免热点现象。
3.数据层面
冷热备份,保障数据的安全;
4.业务层面
代码要做单元测试;代码要做团队层面的定期code review;模拟线上环境,定期压测;业务层面和性能层面进行分离;业务层面应保证数据的准确性和一致性;性能层面做扛压工作。
三、性能
1.接口层面
大接口改为小接口。从客户端开发的简单性角度来讲,一个页面一个接口吐出结果会导致任何一个后端数据超时导致该页面所有的数据超时,尤其是服务端是同步架构的情况下。因此,建议将一个页面的接口尽量拆分。
2.缓存层面通过各种压缩手段(如gzip等)降低memcached的value值的大小,通过CPU换IO,避免耗时过长。
3.数据层面
数据库的分库分表,使得数据库不会因为因为压力过大导致宕机。数据库的主从结构