互联网系统的问题与方案 - 第四周作业

用户头像
X﹏X
关注
发布于: 2020 年 07 月 01 日

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



本人互联网小白,没做过互联网应用,不知道有啥技术方案,只是听过一些牛逼服务,所以只能阐述自身的认知。

我的考虑方向是首先问典型的大型互联网应用有哪些坑,会碰到啥问题,有什么技术方案和手段来解决。所以我自己大概考虑了有一下几种情形。

场景

  • 用户 (面向的群体,规模,层次)

  • 需求 (关注点,解决什么问题,达成什么目的)

  • 生命周期(维护,升级,服役时长)

  • ……

成本

  • 资金

  • 时间

  • 人力

  • ……



如果对用户群体的服务,中台和云服务是很好的选择,对企业的需要搭建私有环境,定制化服务,成本代价都会大很多。

互联网应用主要的难点痛点是在业务上,而非性能上。由于本人对业务没有接触,下述针对性能瓶颈和运维解决方案列举和简单说明。

  1. 瓶颈

大部分问题主要是由于系统性能不足引起的,常见的包括cpu计算能力和读写性能达到瓶颈或资源利用不充分。解决的方案包括"垂直伸缩"和"水平伸缩"。硬件就不多叙述了,主要讲述软件解决方案。



负载均衡

分摊到多个操作单元上进行到不同机器上执行,更合理的利用系统资源。

  • DNS(GEODNS)

  • 反向代理(NGINX)

  • NAT(LVS)



分布式

将多个计算和读写节点组合统一管理,可动态的对外提供服务,性能理论可以无限提升,解决了垂直伸缩无法解决的问题。

  • 存储(ceph/hdfs)

  • 缓存(redis/memcached)

  • 计算(spark)



边缘服务

服务器响应速度除了性能不足外还受限于网络传输,数据传输过程有延迟,边缘区域访问中心节点需要花费更长的时间。

  • CDN



异步

异步能大幅提高服务的并发能力,避免不相干的请求操作的等待。



  1. 运维

大型互联网十分复杂,如果没有系统级的辅助工具,维护上需要投入大量的人力和时间。

监控(zabbix)

监控能提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

虚拟化(docker/kvm)

容器或虚拟机可以提供更安全单一的运行环境,对资源隔离,保障系统的安全,也便于对系统资源的管理,对服务可以快速部署更新

检索(Elasticsearch)

能很方便的使大量数据具有搜索分析的能力,能使数据在生产环境变得更有价值。

容灾(zookeeper/keepalive)

分布式环境能提供良好的分区容错,在机台故障依然能对外提供服务,最常见的就是多机热备的方式运行。

安全

.....



  1. 迭代

迭代过程感觉像重用和拆分的过程,提取共性,拆分差异。

消息队列(rabbitmq/kafka)

消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。

远程调用(rpc)

业务能更好的扩展和解耦合。



产品的迭代通常会设计业务需求增加,变更,新功能的扩展,而推动主要动力来源于数据。数据的来源有对方(网络爬虫\第三方机构),自身记录(日志\数据库),对数据的加工处理和挖掘的技术本人也不是很了解。



发布于: 2020 年 07 月 01 日 阅读数: 35
用户头像

X﹏X

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
互联网系统的问题与方案 - 第四周作业