【架构师训练营 - 作业 -4】互联网应用面对的问题
作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
互联网应用用户多、不限地域、不限时间。故面对的问题很多。
用户量大带来的直接问题就是流量大,高并发
解决思路最直接的就是增强服务器,如增强CPU、内存等提供处理速度与可处理连接数。
增加硬件的使用率。如使用NIO等减少硬件的空闲等待时间。
在垂直扩展以外,可进行分流,做水平扩展,如利用lvs、ng等做负载均衡。
建设缓存。如CDN。分担部分流量。
在极端情况下使用限流措施。
海量数据
与上一点类似,无非就是垂直扩容与水平扩容。增强服务器这一方法还是可行。但互联网应用的场景很难通过垂直扩容满足需求。所以最终还是会水平扩容。如主从分离、分表分库、冷热数据分离、缓存、对业务场景进行针对性数据存储优化搜索等等。
数据继续积累后,在需要对数据进行分析、处理时就需要引入大数据处理工具,如Hadoop、Kafka等。
高可用
现有的互联网应用印象中除了12306晚上只提供查询不提供业务外,别的应用均是24小时运行。服务可用性都是用多少个9来表示。基本要求24小时不间断提供服务。
最原始的比如使用两台服务器,更新时交替更新来保证服务不间断。或现在使用集群的概念,只要不是集群里服务器全部宕机或入口挂了,否则基本不会出现服务器无法访问的情况。当然因为集群的存在,新旧服务存在同时运行的情况,需要开发人员考虑兼容问题
安全问题
不同于传统软件,可以将使用的网络限制在可控范围内。或者如银行使用U盾等辅助设备保证安全。互联网应用对这些容忍度较低,用户都是希望便捷的使用服务。安全问题被放大。
基本的通信、数据加密是需要的。
对开放到外围的接口、资源需要做一定的控制。不能所有的资源均开放。
可以做一定的资源访问权限控制。如敏感资源、接口等仅允许内部固定的应用访问,操作服务器只能在内网环境或使用VPN等。
需求变更快、迭代频繁
这点需要处理的东西其实很多。
最直接的开发问题,需要在最快满足需求的同时保证一定的可扩展性,对编程的要求提高。快速开发可以使用现有的开源框架减少开发量,同时进行code review保证一定程度的代码质量,并在开发过程中持续重构,减少技术债务。
代码量提升后,可进行模块拆分,独立部署,进而升级至微服务架构。当然,至此微服务相关的服务注册、服务发现、服务间调用等能力就需要引入并使用。
服务增多后,开发人员也会变多。协作开发、团队间配合问题就会暴露出来。文档管理、代码管理、沟通等问题的处理。文档显得尤为重要。前期缺失的文档需要一一补上。
随着服务越来越多,实现一个需求可能就要多个团队配合。一个整合现有能力提供统一简单的入口变得重要,可能就会出现中台等概念。
等等等等以及未来的问题。
版权声明: 本文为 InfoQ 作者【小动物】的原创文章。
原文链接:【http://xie.infoq.cn/article/87646f6d7e7168da60df30695】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论