【架构师训练营 - 作业 -4】互联网应用面对的问题

用户头像
小动物
关注
发布于: 2020 年 06 月 29 日

作业

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。



互联网应用用户多、不限地域、不限时间。故面对的问题很多。



用户量大带来的直接问题就是流量大,高并发

解决思路最直接的就是增强服务器,如增强CPU、内存等提供处理速度与可处理连接数。

增加硬件的使用率。如使用NIO等减少硬件的空闲等待时间。

在垂直扩展以外,可进行分流,做水平扩展,如利用lvs、ng等做负载均衡。

建设缓存。如CDN。分担部分流量。

在极端情况下使用限流措施。



海量数据

与上一点类似,无非就是垂直扩容与水平扩容。增强服务器这一方法还是可行。但互联网应用的场景很难通过垂直扩容满足需求。所以最终还是会水平扩容。如主从分离、分表分库、冷热数据分离、缓存、对业务场景进行针对性数据存储优化搜索等等。

数据继续积累后,在需要对数据进行分析、处理时就需要引入大数据处理工具,如Hadoop、Kafka等。



高可用

现有的互联网应用印象中除了12306晚上只提供查询不提供业务外,别的应用均是24小时运行。服务可用性都是用多少个9来表示。基本要求24小时不间断提供服务。

最原始的比如使用两台服务器,更新时交替更新来保证服务不间断。或现在使用集群的概念,只要不是集群里服务器全部宕机或入口挂了,否则基本不会出现服务器无法访问的情况。当然因为集群的存在,新旧服务存在同时运行的情况,需要开发人员考虑兼容问题



安全问题

不同于传统软件,可以将使用的网络限制在可控范围内。或者如银行使用U盾等辅助设备保证安全。互联网应用对这些容忍度较低,用户都是希望便捷的使用服务。安全问题被放大。

基本的通信、数据加密是需要的。

对开放到外围的接口、资源需要做一定的控制。不能所有的资源均开放。

可以做一定的资源访问权限控制。如敏感资源、接口等仅允许内部固定的应用访问,操作服务器只能在内网环境或使用VPN等。



需求变更快、迭代频繁

这点需要处理的东西其实很多。

最直接的开发问题,需要在最快满足需求的同时保证一定的可扩展性,对编程的要求提高。快速开发可以使用现有的开源框架减少开发量,同时进行code review保证一定程度的代码质量,并在开发过程中持续重构,减少技术债务。



代码量提升后,可进行模块拆分,独立部署,进而升级至微服务架构。当然,至此微服务相关的服务注册、服务发现、服务间调用等能力就需要引入并使用。



服务增多后,开发人员也会变多。协作开发、团队间配合问题就会暴露出来。文档管理、代码管理、沟通等问题的处理。文档显得尤为重要。前期缺失的文档需要一一补上。



随着服务越来越多,实现一个需求可能就要多个团队配合。一个整合现有能力提供统一简单的入口变得重要,可能就会出现中台等概念。



等等等等以及未来的问题。



发布于: 2020 年 06 月 29 日 阅读数: 41
用户头像

小动物

关注

还未添加个人签名 2017.12.12 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营 - 作业 -4】互联网应用面对的问题