分布式架构云平台在充分分析IT技术发展趋势,遵循集中化、标准化、集成化、可靠化和可扩展化的设计原则,以价值创造为使命,以规范化、一体化、智能化的云平台为支撑,实现信息的透明共享、业务的敏捷协同、管控及时、决策科学为设计目标,选择传统成熟的J2EE、SOA、应用集成和BI信息技术和新一代的云计算、大数据、移动应用信息技术相结合的技术路线。
分布式架构云平台规划设计了:
集约化、云架构动态配置的企业IT基础设施;
共享化、集中数据存储管理的企业数据资源服务;
组件化、平台化、柔性集成的企业应用支撑服务;
标准化、服务化、整合智能的企业业务应用服务;
一站式、多终端服务的企业信息展示交互服务等技术层,每层又包括若干成熟稳定的技术组件,各技术层,自下而上,层层支撑,各技术组件松散耦合,互联互通,科学高效,易于扩展,减少了信息孤岛,增强了系统的标准化和集约化,优化了系统的用户体验,提高工作效率。
分布式架构云平台技术设计原则
先进性原则
在整体设计和实现上,依托云计算、大数据领域的知名开源项目(如Hadoop、Spark、OpenStack等)。由于遵循了业界广泛认可的事实标准,可以充分借力全球生态圈的资源,推动软硬件分层解耦,不断提升兼容性。兼容多种异构物理设备,避免厂商绑定。数据层面,支持多种数据源,包括结构化/非结构化类型的数据处理,数据本身、数据计算也都支持开放共享。优先采用先进成熟的技术组件,搭建稳定并且高效的大数据云计算管理平台,并在平台基础上实现大规模的数据采集与分析的相关业务应用。平台设计以满足当前的业务功能为主,兼顾考虑未来发展的趋势。
可靠性原则
可靠性包括整体可靠性、数据可靠性和单一设备可靠性三个层次。通过大数据云计算平台的分布式计算、存储架构,从整体系统上提高可靠性,降低系统对单设备可靠性的要求;平台设计方面保证基于hadoop和虚拟化的集群系统平台的稳定与高效,提供针对现有底层硬件设备的Hadoop和虚拟化相关技术组件的调优,以及对于整体集群的配套监控系统的搭建和集群维护与管理等相关方案;应用设计方面采用明确的应用分层架构,一方面可实现上层数据应用与底层基础数据的依赖分离,实现应用架构上的解耦;另一方面可提高上层数据的分析效率与降低运行成本。采用相关的容错技术和故障处理技术,保证数据应用的安全可靠,保证数据分析平台可用性达到使用要求。
安全保密性
采用统一的用户认证,统一的用户、权限管理和控制、密码控制等多种安全和保密措施。为保证信息的安全性,对内部网上的信息建立符合安全要求的防火墙、入侵检测、数字证书、防病毒、数据加密技术等,能够严格有效地防止外来非法用户入侵,能够避免遭受网络攻击,防止失密情况的发生,防止非法侵入带来的损失。
可扩展性
应用开发平台采用模块化建设和扩展模式。支持小规模起步,线性扩展,以满足不同场景,不同投资计划和规模的要求;随着数据规模的扩大、应用的完善,现在数据平台能够在不影响当前用户正常使用的情况下,灵活、方便地进行集群扩容。
开放性
云计算平台是在成熟落地的方案上完全自主研发,主要应用开源技术。
大型网站不是设计出来的,而是逐步演化出来的。因为互联网发展运行有其自己的规律,互联网历史已经一再证明“一开始就把网站设计成大型的”这种企图行不通。另外,演化过程中,需要分清当前哪个点是瓶颈,需要知道哪个点优化的优先级最高。所以,技术架构的演进不一定就是按文章从头到尾这样列下来的,要视具体情况来下决定。
从一个小网站说起,一台服务器也就足够了。演进包括如下:
(1)数据服务器和应用服务器分离。给应用服务器配置更好的 CPU,内存。而给数据服务器配置更好更大的硬盘。
(2)使用缓存。因为 80% 的业务访问都集中在 20% 的数据上,如果我们能将这部分数据缓存下来,性能一下子就上来了。空数据也要入缓存,否则会增加数据库的压力。
(3)nosql。NoSql数据库大量应用于微博系统等事务性不强的系统。如:BigTable、MongoDB
(4)服务器集群。需要考虑:负载均衡问题? 负载均衡调度服务器,如nginx。Session 的管理问题。如何让上传文件这些类似的功能继续正常?采用文件服务器统一管理。
(5)数据库读写分离。订阅和发布。实现一个数据访问模块使上层写代码的人不知道读写分离的存在。需要考虑:时延问题。MySQL数据同步是通过binlog日志。延迟问题通过水平拆分服务来提高性能、多线程同步解决。
(6)数据库拆分。垂直拆分数据库时,会遇到的问题:跨业务的事务,应用的配置项多了。数据水平拆分会遇到的问题:SQL 的路由问题,需要知道某个 User 在哪个数据库上。主键的策略会有不同。查询时的性能问题,如分页问题。
(7)CDN。分布式文件系统使用 CDN 。将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。据统计,采用CDN技术,能处理整个网站页面的 70%~95%的内容访问量,减轻服务器的压力,提升了网站的性能和可扩展性。异地部署一般遵循:核心集中,节点分散。如:网宿、睿江、蓝讯,将网站内容同步到全国CDN节点,客户就近访问CDN服务器。
(8)分布式拆分。网站的业务日益复杂,建立一个独立的大型应用来完成这所有的业务变得不实际。从管理角度来,也不方便管理。将系统根据职责进行拆分,同时也能采用大量的廉价机器来支撑着巨大的访问量和数据量。微服务架构的优势很明显:耦合度低、技术选型灵活、发布更加高效、故障隔离。拆分会碰到很多的挑战:1、拆成分布式后需要提供一个高性能、稳定的通信框架,并且需要支持多种不同的通信和远程调用方式;2、将一个庞大的应用拆分需要耗费很长的时间,需要进行业务的整理和系统依赖关系的控制等;3、如何运维(依赖管理、运行状况管理、错误追踪、调优、监控和报警等)好这个庞大的分布式应用。
(9)大系统小做。将功能复杂较大的系统,化大为小,减少模块耦合,降低关联性。分成一个个高度自制的小系统,形成高内聚低耦合的格局,每个模块之间不会过分依赖对方,这样的好处是不会因为任何一个模块而影响全部服务,避免牵一发动全身的风险,实现真正的灰度服务。
(10)硬件负载均衡。一台Nginx服务器的软负载已经无法承担巨大的web访问量了,可以用硬件负载解决F5或应用从逻辑上做一定的分类,然后分散到不同的软负载集群中。
分布式关键技术
业务方式,以苏宁易购在线直播购物转化为例:
(1)前端缓冲请求。
(2)后端采用异步分拆。
(3)快速拒绝。
(4)流量预加载。
(5)资源隔离。
(6)根据业务场景降低视频质量。
(7)回滚机制会造成业务逻辑复杂,容易出错,可能会出现漏洞。我们应该提高服务的简单性、高可用性,减少出错率。对于极少的错误,后续对日志进行单独处理即可。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559352/viewspace-2640946/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31559352/viewspace-2640946/