1.软件架构设计:大型网站技术架构与业务架构融合之道---五花八门的架构师职业(代码片段)

enlyhua enlyhua     2023-01-14     643

关键词:

第1部分 什么是架构
	硬:
		语言,数据结构与算法,操作系统原理,某种框架或中间件原理与使用方式。

	软:
		软件建模,架构设计等。

	显性问题:
		高并发,高可用,数据一致性问题。

	隐形问题:
		可重用性,可扩展性,可维护性等。


	什么是架构?
	架构是针对所有重要问题作出的重要决策。不同公司或者同一家公司不同历史阶段面了的"重要问题"是不同的,所以架构所做的事情自然不同。


第1章 五花八门的架构师职业
	1.1 架构师职业分类

	1.2 架构的分类
		1.第一层:基础架构
			基础架构是指 云平台,操作系统,网络,存储,数据库和编译器等。随着目前云平台越来越普及,很多的中小公司都选择了大公司的云计算平台,而不是自己研发和
		维护基础架构。

		2.第二层:中间件与大数据平台
			a) 中间件架构
				例如 分布式服务中间件,消息中间件,数据库中间件,缓存中间件,监控系统,工作流引擎和规则引擎等。

			b) 大数据架构
				例如开源的 Hadoop 生态系统,Hive,Spark,Storm,Flink等。

		3.第三层:业务系统架构
			a) 通用软件系统
				如最常用的办公软件,浏览器,播放器等。

			b) 离线业务系统
				如各种基于大数据的BI分析,数据挖掘,报表与可视化等。

			c) 大型在线业务系统
				如搜索,推荐,即时通信,电商,游戏,广告,企业ERP或CRM等。

		关于架构的这种分类,说明2点:
			1.对于中小公司,可能没有第二层,即使有也可能只有少数一部分。对于大公司,在第二层和第三层的处理策略上也不一样:有些公司会选择让业务团队同时做第二层的
			工作,做在线业务的同时做了中间件的工作,做大数据业务的同时搭建和维护了大数据架构;有些公司会安排专门的团队做中间件与大数据平台。
			2.对于第三层的划分,也不是很绝对。一个业务系统随着技术的进步,很多功能将被通用化,标准化,最终变成了一个通用系统。如搜索,以前是一个专业性很强的业务
			系统,随着搜索技术的不断进步,现在搜索的很多功能已经被通用化了,如ES的出现。

 

 

 

 

 

 

1.软件架构设计:大型网站技术架构与业务架构融合之道---五花八门的架构师职业(代码片段)

第1部分什么是架构 硬: 语言,数据结构与算法,操作系统原理,某种框架或中间件原理与使用方式。 软: 软件建模,架构设计等。 显性问题: 高并发,高可用,数据一致性问题。 隐形问... 查看详情

6.软件架构设计:大型网站技术架构与业务架构融合之道---数据库(代码片段)

第6章数据库6.1范式与反范式 数据库范式要求: 第一范式: 每个字段都是原子的,不能再分解。 第二范式: 1.表必有主键,主键可以是单个属性或者几个属性的组合。 2.非主属性必须完全依赖,而... 查看详情

7.软件架构设计:大型网站技术架构与业务架构融合之道---框架软件与中间件(代码片段)

第7章框架、软件与中间件7.1对生态体系的认知 技术的生态体系:就是从底层基础设施,到运维,中间件,大数据平台,这些技术之间可以很好的衔接,比如监控系统和rpc中间件,消息中间件,数据... 查看详情

2.软件架构设计:大型网站技术架构与业务架构融合之道---架构的道与术(代码片段)

第2章架构的道与术 2.1何为道,何为术 这个方法论,即是架构的道。具体来说,对于技术问题,主要是指高并发,高可用和数据一致性方面;对于业务问题,主要是指业务的需求分析和业务建模。 道... 查看详情

4.软件架构设计:大型网站技术架构与业务架构融合之道---操作系统(代码片段)

第4章操作系统4.1缓冲I/O和直接I/O 缓冲IO:缓冲IO是C语言提供的库函数,均以f打头; fopen,fclose,fseek,fflush,fread,fwrite,fprintf,fscanf; 直接IO:是Linux系统的API,操作系统的API也是C语言写的; open,close,lseek, 查看详情

14.软件架构设计:大型网站技术架构与业务架构融合之道---业务架构思维(代码片段)

第14章业务架构思维14.1“伪”分层 典型的互联网分层架构: 客户端=>接入层=>聚合层=>业务层=>基础服务层=>数据层 伪分层架构可能具有的一些特征: 1.底层调用上层 比如某个基础服务调用上... 查看详情

17.软件架构设计:大型网站技术架构与业务架构融合之道---团队能力的提升(代码片段)

第17章团队能力的提升17.1不确定性与风险把控 技术管理的首要任务是项目管理。对于项目管理,有一个关键问题要面对:"不确定性"的问题。有哪些不确定性呢? 1.需求的不确定性 2.技术的不确定性 3.人员的... 查看详情

13.软件架构设计:大型网站技术架构与业务架构融合之道---业务意识(代码片段)

第13章业务意识13.1产品经理vs.需求分析师 技术不是无源之水,一旦离开业务纯粹的谈技术,就失去了驱动技术发展的根本要素。另外一方面,研发部门的人力资源和时间是有限的,而业务需求是无限的,要用... 查看详情

8.软件架构设计:大型网站技术架构与业务架构融合之道---高并发问题(代码片段)

第8章高并发问题8.1问题分类 8.1.1侧重于“高并发读”的系统 1.场景一:搜索引擎 读写的差异: a)数量级 b)响应时间 c)频率 2.场景二:电商的商品搜索 3.场景三:电商系统的商品描述,图片和价格 8.1... 查看详情

11.软件架构设计:大型网站技术架构与业务架构融合之道---多副本一致性(代码片段)

第11章多副本一致性 无论是mysql的master/slave,还是redis的master/slave,或者是kafka的多副本复制,都是通过牺牲一致性换取高性能的。 但如果需要一个既满足高可用,又满足一致性的系统,就需要一致性算法或者... 查看详情

16.软件架构设计:大型网站技术架构与业务架构融合之道---个人素质的提升(代码片段)

第16章个人素质的提升16.1能力模型 1.格局 举例说明什么是全局视野。比如现在要开发一个新系统,可能需要理解下面这些关系到"大局的问题": 1.系统的定位是什么?它能创造什么核心价值? 2.开发这个... 查看详情

9.软件架构设计:大型网站技术架构与业务架构融合之道---高可用与稳定性(代码片段)

第9章高可用与稳定性 "高并发"是为了让系统变得"有效率",高可用和稳定是是为了让系统变得"更稳定"。9.1多副本 对于网关和应用服务器这种无状态的服务,做多副本比较简单,加机器就行;但... 查看详情

10.软件架构设计:大型网站技术架构与业务架构融合之道---事务一致性(代码片段)

第10章事务一致性 一致性问题分为两类: 1.事务一致性 2.多副本一致性10.1随处可见的分布式事务问题 分布式时代,数据库的单机机制不管用了,因为数据库本身只能保证单机事务,对于分布式事务,只能靠... 查看详情

12.软件架构设计:大型网站技术架构与业务架构融合之道---cap理论(代码片段)

第12章CAP理论12.1CAP理论的误解 C:一致性。如事务一致性,多副本一致性。 A:可达性。客户端超时,也是不可达。 P:网络分区。系统一旦变成分布式,有多个节点,就可能存在超时或者网络中断。 在... 查看详情

大型网站技术架构:核心原理与案例分析阅读笔记之四

   通过本书了解到网站架构的几个基本要素,首先软件架构是关于软件的结构与组建的抽象描述,用于指导大型软件系统各个方面的设计。往往软件架构决定了软件以后的发展,对于一个成熟的软件应当具备以下几个... 查看详情

分布式架构设计之电商平台

分布式架构设计之电商平台 何为软件架构?不同人的答案会有所不同,而我认为一个好的软件架构除了要具备业务功能外,还应该具备一定的高性能、高可用、高伸缩性及可拓展等非功能需求。而软件架构是由业务架构和技... 查看详情

大型网站技术架构:核心原理与案例分析阅读笔记三

大型网站核心架构要素之性能    在讲架构要素之前,我们首先要了解什么是架构,简单来说,架构就是“最高层次的规划,难以改变的决定”,架构决定了未来的方向和最终的成果。而对于软件架构来说,则是“... 查看详情

学习笔记7:《大型网站技术架构核心原理与案例分析》之永无止境:网站的伸缩性架构李智慧著

伸缩性:不需要改变网站的软硬件设计,仅仅通过改变部署的服务器的数量就可以扩大或者缩小系统的服务处理能力。最重要的技术手段是服务器集群,能做到向集群中加入服务器的数量和集群的处理能力成线性关系。一、伸缩... 查看详情