话说天下大事,分久必合,合久必分,在计算机的历史中也有借鉴。从最开始的终端主机模式到客户端服务器模式,到J2EE的3层结构,乃至集群和分布式结构,把系统不断的拆分和抽象,当分布式的服务器到了一定的规模,远远的看去,又像了一套硕大无朋的主机,只是高高的挂在天上。只是一个是从云端鸟瞰大地,俯视芸芸众IT民工;一个是仰望星空,感慨云卷云舒遥不可及。历史划了一个圈,仿佛又回到了起点,其实不然,此时的云计算和当年主机感观上可能有些相似,但内部机理已经完全不同,是一个螺旋式上升的趋势。
本文中结合平台研发部中所有同事的劳动成果、自己在项目推广应用中的感悟和体会,以及一些思维的外延,并尽可能用能阐述清楚的文字或者图片,说明如何从云端到具体落地的过程,尝试在基于云端项目推广中,减少和项目之间的交流和沟通成本,尽快的为项目的实施和落地,做点自己力所能及的事情。
系统的演变从来都是外界的需求而产生,无论是被动也好,还是未雨绸缪,每次演变都是为了解决需求的一部分问题。本文不讨论具体的业务问题,主要是考虑在互联网形势下,大型系统应有的结构和功能。一般来说有具体的场景和事例讲解起来更贴近现实,不过因为公司内部没有这么大的系统,也没有这样的相关经验,相关的资料也是麟毛凤角,要不简单,要不就是高度抽象,只能多方收集资料,再加上自己的一些想象和理解。
国内顶尖的互联网公司有4个,分别在各自的领域占据绝对领导地位,腾讯,百度,淘宝,盛大,以及一些在各自细分的专业领域中的领导地位的公司,比如优酷和土豆,当然他们现在结婚了,变成优豆了;比如在卖书行业,当当,豆瓣等。
根据公司的规划的5条产品线,以及支撑的一些项目来看,最和我们公司业务贴近的是淘宝,所以在组件的开发,架构的设计,以及基础设施的搭建上,借鉴和学习淘宝就是一条可行的方式。淘宝的组件基本开源了,包括分布式服务框架,大数据文件系统等,其他的文档和资料也能检索到,极大的提高了国内开源社区的力量,提供了一批高品质的组件和设计思想,我们在学习和借鉴之余,向我们的互联网应用的前辈致以崇高的敬意。
既然从业务上归类,我们和淘宝有些类似,那就借鉴淘宝的一些资料和图片,看看淘宝网站是如何破茧而出的。首先我们看看淘宝网站的架构变迁编年史。下面这张图阐述了淘宝网站12年来的几次重大变迁:
- 总的说来,淘宝网站是紧贴时代的变化,是技术的弄潮儿。
- 每次变化都给淘宝网站带来质的飞跃
- 目标是更大更强,部署更自动化,管理更智能化
架构规定了软件的高层划分及各部分间的交互:
- 架构不是软件,但架构决策体现于软件平台和框架之中
- 架构的优劣决定了业务应用系统的实施能力和发展空间
- 技术搭台,业务唱戏 à 架构搭台,应用唱戏
图31-01a 淘宝系统的变迁编年史
图31-01b 架构升级后的效果
任何大型系统的实施和运行,都离不开软件架构,部署方式,物理结构,这些构造了整个系统的生态系统,任何一个短板都造出系统的运行能力下降。
- 软件架构,包括采用的技术框架,业务的拆分,系统的分层分块,请求路由的处理(粘性会话?服务端处理?客户端处理?),数据库的模式(拆分?集群?大表?小表?)
- 部署方式,包括画域分区来对应不同的软件模块,采用的web容器,EJB容器,消息服务等,彼此关联的系统的维系,关联的服务启动的先后次序,启动关停的脚本,数据库初始的数据等
- 物理结构,包括主机的虚拟化,存储的划分,网络的设定,操作系统的状态(启动,关停,正常),以及有此而引申的系统的动态迁移,预警机制等功能。
作为架构师,以前更多的关注是软件的架构,对部署模型,物理模型不甚了解,但部署模型,物理结构承载的是软件的实现,直接影响系统的性能表现,所以这也是老董说架构师需要了解物理模型的初衷。(从前是项目打成大的war包,分别在几个不同的应用服务器上部署,数据库开启,就算完成了部署)
淘宝网站从99年到现在,一路走来,从小到大,系统不断的沉淀和发展,乃至现在一种巨无霸的形态,它是如何支撑并且做到的呢,那个时候并没有云。可见,云并不是系统可伸缩可扩展可升级的必要条件,只要心中有云,哪里都是云;心中无云,就算有朵云在我们的身边,我们仍旧是云里雾里,这也就是我们现在的感受,因为我们并不了解云的作用和它的使命,对云有太多的要求,有太多的误解,有太多的期望。
淘宝是如何在没有云的支撑下做到这点的呢,我没有更多的资料,但我想应该是淘宝在一个时间阶段,形成了一个固定的模式(模式也在不同的阶段中演化和重构,比如早期阶段编写了很多脚本,以及在作了约定和缺省配置),产品经理只需要设计好自己的创意和构思,再和一帮志同道合的同事捣鼓出来,然后遵照一些模式和要求,再统一部署和上线,也就是说,一些基础的模式来保证系统对外界的大并发能力的支撑。
- 系统按照可拆分的原则设计
- 无状态模式,session在cookie处理
- 业务系统被设计能拆分(分布式框架,采用消息等异步方式)
- 数据库扩展能力
- 支持数据库的扩展
- 读写分离,在数据库端保证数据的复制
- 基础能力封装,直接调用即可,提供通用的业务支撑能力
- 大文件系统,存储海量数据和文件(包括小文件系统)
- 后台处理能力
- 消息能力
- 有成熟的部署脚本,能快速的部署和回滚,并有一套流程和保障措施
- 有成熟的监控处理能力,发现瓶颈,及时预警或自动采取措施
- 有成熟的底层系统控制能力
- 快速的产生一批主机(也许是虚拟机)
- 快速的组网,画域
- 支持系统的动态迁移(把系统从a区移动到b区)
从这些来看,淘宝网站已经有了云系统的基础特征,而且也有了外部的需要拉动,需要更好的基础设施来支撑业务的上线,升级,部署,以及运营。淘宝的资料里面,有句话“业务唱戏”à“应用唱戏”的转变,这个应用其实包括了比业务本身更多的内容,比如创建脚本,依赖关系,自动检查和依赖检查以及初始化的脚本语句等等,也许还有其他的内容。所以淘宝网站发展到当前阶段,转openAPI和云计算就是水到渠成的事情了。
上一篇 从项目开发到云端架构(07) :http://timeson.iteye.com/blog/1685874
下一篇 从项目开发到云端架构(09) :http://timeson.iteye.com/blog/1687643
- 大小: 32.4 KB
- 大小: 18.4 KB
分享到:
相关推荐
【模拟云端系统项目】是一个综合性的IT项目,它结合了前端和后端技术,旨在构建一个功能完善的云端应用。...这样的项目实践能帮助开发者深入理解云端应用的开发流程和架构设计,提升在分布式系统中的实战能力。
在当前数字化时代,"云端第三代系统开发"是一个重要的议题,它涉及到如何利用先进的技术构建高效、易用且灵活的云服务平台。在这个系统开发过程中,Java作为主要编程语言扮演着核心角色。下面我们将深入探讨这个话题...
云端系统源码第二版是一个...综上所述,云端系统源码第二版是一个涉及多方面技术和实践的综合项目,涵盖了从底层基础设施到上层应用服务的全方位设计。深入理解和掌握这些知识点对于开发、运维和管理云端系统至关重要。
在Android开发中,结合Web服务(Webservice)可以实现丰富的云端功能,比如数据同步、远程API调用等。"android基于webservice云端运用最新代码EasyEnglish"是一个示例项目,展示了如何在Android应用中集成Webservice...
以上内容仅是对“wiki云端知识库平台项目”可能涉及的技术栈和概念的一个概述,具体实现可能根据开发团队的选择和技术栈有所不同。对于学习者来说,深入理解并掌握这些知识点,将对个人的技能提升和未来职业发展...
综上所述,这个压缩包是鸿蒙OS开发者的一站式资源库,涵盖了从系统底层到应用开发的各个环节,对于想要涉足鸿蒙OS领域的开发者而言,是一个宝贵的资料集合。通过深入学习和实践,开发者可以更好地掌握鸿蒙OS的开发...
“云端”意味着它涉及到云存储或云计算的服务。“脚本”指的是可执行的代码文件,如JavaScript、Python等,可能是网页脚本或者其他类型的程序。“获取器”和“下载器”则说明了工具的功能,即获取并下载云端的脚本...
通过研究这些源代码,初学者可以学习到实际项目开发中的最佳实践,而有经验的开发者则可以借鉴其中的设计模式和问题解决策略。无论是独立学习还是团队协作,这个资源都能提供宝贵的经验和洞察。
9. **部署与运维**: 项目可能还包含了部署和运维相关的文档,例如Dockerfile或者Kubernetes配置,帮助开发者将应用部署到云端或本地环境。 这个项目不仅提供了实际的代码实现,还可以作为学习微服务架构、前后端...
总结,SRA2021-G03-项目开发计划1.81是一个旨在构建云端知识库APP的详尽蓝图,涵盖了项目从需求分析到实施、测试、上线及后续维护的全过程。通过这个计划,团队能够有序地进行开发工作,确保知识库应用能高效、安全...
DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...
JSP+SSM项目-云端学习系统的Java毕业设计.rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:345】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 端学习系统在...
【SRA2021-G03-项目开发计划1.71】是关于一...总之,"SRA2021-G03-项目开发计划1.71"是一个全面的项目管理文档,它涵盖了项目从启动到完成的所有关键环节,旨在确保团队高效协作,成功开发出满足需求的云端知识库APP。
《构筑大语言模型应用:应用开发与架构设计》是一份深度探讨大语言模型在实际应用中的开发和架构设计的资源集合。这份资料来源于GitHub上的开源项目phodal/aigc,旨在帮助开发者理解和利用大语言模型的技术,提升...
它的出现是为了解决软件开发和维护的成本问题,通过将软件部署到云端,提供基于互联网的软件服务,用户可以通过互联网访问和使用软件。 SAAS 架构设计模式的优势包括: 1. 用户方面:拿来即用,无须维护,按需使用...
在物联网项目开发中,可能还需要特定的物联网协议解析或设备模拟插件。 3. **物联网架构**: 物联网环境监测系统通常包含传感器节点、网关和云端平台三个部分。传感器节点负责采集环境数据,如温度、湿度、光照等...
总结,本Android项目开发报告全面展示了项目开发的各个方面,从底层的平台架构到上层的功能实现,再到数据库和项目组织,为开发者提供了清晰的开发指南。通过这样的报告,不仅可以评估项目的成熟度,也便于团队协作...
9. **版本控制**:在项目开发过程中,版本控制非常重要。微信开发者工具允许开发者进行代码版本管理,便于团队协作和回滚更改。 10. **发布与更新**:完成开发后,开发者可以在微信开放平台上提交审核,待审核通过...
本项目“springboot-netty-protobuf-master”旨在提供一个基础架构,它利用了Spring Boot的便捷性以及Netty的高效网络通信能力,同时采用Google的Protocol Buffers(protobuf)作为数据交换格式,确保数据传输的高效...