Week4 命题作业
问:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
答:
水平伸缩
增加服务器提升计算能力
水平伸缩可以克服垂直伸缩带来的计算单位成本随计算能力增加而迅速飙升的问题
理论上可以无限增加服务器,没有垂直伸缩计算能力单机受限的问题
集群技术
提高并发处理能力
易于动态扩展
防止单点故障
负载均衡技术
平衡服务器访问压力
分布式技术
调动多台服务器共同解决一个问题
分布式数据库
坚固性好:个别节点或个别通信链路发生故障,仍可以降低级别继续工作;若采用冗余技术,还可以具备容错能力。因此坚固性好,即系统的可靠性和可用性好。
可扩充性好:可根据发展的需要增减结点,或对系统重新配置,这比用一个更大的系统代替一个已有的集中式数据库要容易得多。
可改善性能:在分布式数据库中可按就近分布,合理地冗余的原则来分布各结点上的数据构造分布式数据库,使大部分数据可以就近访问,避免了集中式数据库中的瓶颈问题,减少了系统的响应时间,提高了系统的效率,而且也降低了通信费用。
自治性好:数据可以分散管理,统一协调,即系统中各结点的数据操纵和相互作用是高度自治的,不存在主从控制,因此,分布式数据库较好地满足了一个单位中各部门希望拥有自己的数据,管理自己的数据,同时又想共享其他部门有关数据的要求。
分布式文件存储
可实现文件的分布式存储,同时可设置一定的副本数,提高容错能力,防止个别节点故障导致该节点上的文件不可访问
通过多台服务器提供文件资源,均分文件I/O压力,提高性能
分布式缓存
高性能地读取数据,使用的硬件资源为内存,读写速度快于磁盘
能够根据需要动态地扩展缓存节点
能够自动发现和切换故障节点
能够自动均衡数据分区
微服务架构
技术异构性:在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。
弹性强:弹性主要讲的是系统中一部分出现故障会引起多大问题。
扩展性强:单块系统中,我们要做扩展,往往是整体进行扩展。而在微服务架构中,可以针对单个服务进行扩展。
简化部署:大型单块系统中,即使修改一行代码,也需要重新部署整个应用系统。这种部署的影响很大、风险很高,因此不敢轻易地重新部署。而微服务架构中,每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署。
与结织结构相匹配:我们都知道,团队越大越难管理,同时团队越大也代表系统规模越大代码库越大,这样容易引起一系列的问题。且当团队是分布式的时候,问题更严重。微服务架构就能很好地解决这个问题,微服务架构可以将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力。
可组合性:在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化应用程序只能提供一个非常粗粒度的接口供外部使用。
对可替代性的优化:在单块系统中如果删除系统中的上百行代码,也许不知道会发生什么,引起什么样的问题,因为单块系统中关联性很强。但在微服务架构中,我们可以在需要时轻易地重写服务,或者删除不再使用的服务。
大数据平台
调度监控
结果集成
§ 多维分析
§ 自助查询
§ 实时展示
§ MySQL
§ Hbase
大数据处理
§ MapReduce
§ Hive
§ Spark
§ HDFS
§ SparkStreaming
数据源ETL
§ Sqoop
§ 消息队列(Kafka)
§ MySQL
§ 后台系统
§ App埋点
§ 网络爬虫
§ 日志收集
事件驱动架构
便于扩展
版权声明: 本文为 InfoQ 作者【星河寒水】的原创文章。
原文链接:【http://xie.infoq.cn/article/52dadc1b78f1a5c4096980a8c】。未经作者许可,禁止转载。
评论