架构

对架构的一点思考

妖精的绣舞 提交于 2019-12-06 16:07:12
仅作个人记录,读者看之几乎无益 本文灵感来自 1.某大型项目的源码的长达1-2天的阅读 2.微信架构演变一文 一开始我想到了纯模块化,比如说一个项目,把每个模块都拆分的清清楚楚,模块之间不产生任何依赖,仅仅暴露接口。这也是微信一文的一个思想。 在项目扩大的时候,模块会衍生许多小模块,这些小模块就变成了新的独立的模块了。 最后我们需要画一张图,把整个系统,画成一颗模块树。 利 我们开发一个模块的时候是很简单的,跟做一个小项目一样,甚至可以写在一个独立的apk里。我们只需要划分模块很清晰,就能在架构上迈出坚实的一步了。 弊 每个模块里都有不同的基类依赖,比如模块A请求网络用的是OkHttp,但是B请求网络如果用的也是OkHttp,那么包不就重复引入了,apk体积不就大大增加了?当然我们可以统一管理lib与so,但是这些大型的库,和小型的工具类又有何区别?所以我们最好是把所有的基类都放在同一个库里统一管理。 这个时候有2个方式可以选择: 1.所有的都放在基类里管理 2.先写在模块里,列一个清单,发现某个基类(也可以称之为服务、功能,是lib、so+服务的结合体)被重复依赖2次的,就直接下沉到基类,如果只有这个模块会用到这个基类,就保留在这个模块里 显然是第一种方法好,第二种方法固然可以简化基类,但是模块内的基类仍有留存,这样管理起来就显得复杂。所以最好是所有的基类都放到底层

关于架构演进的一点思考

喜你入骨 提交于 2019-12-06 16:02:27
首先,架构的演进是为了解决什么问题?是为了解决软件系统日益增长的复杂性。通过什么方式解决的?通过分拆业务层(对每一层进行纵向划分)或增加一层(对每一层进行横向划分)来对系统进行更加细粒度的划分,便于理解系统的每一部分功能。 计算机系统软件体系结构采用一种层的结构,有人说过一句名言: “计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决” “Any problem in computer science can be solved by anther layer of indirection.” 下一层通过调用接口来为上一层提供服务,而每一层都可以按功能进行纵向划分: 参见博文: 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决 传统的单体架构: 一个归档包(例如war格式)包含所有功能的应用程序,通常称为单体应用。 如图所示: 上面是逻辑结构,下面是War包的物理结构: 详见: WAR包的目录结构 Service层在代码中通常会定义为接口和实现类: SOA架构: SOA架构是每个模块对应用内部暴露为服务,但是它们还是属于一个单体应用。 微服务架构: 每个模块作为一个单体应用对外提供服务。 它们之间的优缺点详见博客: 架构演化 模块化身为服务以后有一个特别吸引人的优点,那就是服务应该是自说明的。也就是说,我们并不知道这个模块会提供什么服务

第9章 软件架构的未来

谁说胖子不能爱 提交于 2019-12-06 15:17:38
当今的架构领域,已经从先前的门派林立、各种思想和概念混杂的基础探索时期,演 化成为了这样两个重要的潮流:一个是开始大量使用架构描述语言(ADL)及其相应辅助 工具;另一个是全范围地接受产品线架构方法论。 1.架构描述语言及辅助工具 业界现在已经普遍认识到,先前通过使用一些非正式的图表来表达一个系统结构的做 法,无论从表达的淸晰度和准确度来讲,还是从架构信息的一致、完整和正确等方面来讲, 都存在着严重的问题。 当前,我们己经能够看到各个公司都大量地使用了不同的架构描述语言(ADL)来构 建系统概念框架和系统结构。 除了用架构描述语言勾勒系统结构,还可以配合使用一些辅助工具,把所描述出来的 架构进行显示并进行图形化、解析、编译、分析和模拟等工作,如图9>1所示• 很明显,这其实就是人类梦寐以求的一种系统设计方式:利用描述语言或图形化语言 来构建系统结构,利用一个解释器来翻译,最后的产出就是我们需要的系统实现代码。这 个梦想已经成为当今一个重要潮流。 2.产品线架构的方法论 正如我们文中提到的,目前非常盛行利用产品间的共性特点来构建产品线架构。这个 趋势的原动力是市场要求产品研发环节能够快速反应需求的变化。这对只习惯于进行传统 单个产品研发的公司来讲,无疑是一个巨大的挑战和痛苦的转变过程。 传统的单一产品研发’面对的只是针对该产品独立的需求,而且不同的产品会构建属 于自己独享的架构。但是

第三章 工作中的架构师

故事扮演 提交于 2019-12-06 15:17:06
提供高效的帮助和引导。具体而言,架构师的工作内容主要包括: ♦冷静和系统地平衡功能与性能的要求,分析软件系统盾量的要求和其他系统特征。 #控制和处理有关系统粒度、范围、包含、连接和耦合的问題。 澄清接口策略,制定接口架构约束原則。 ^计划系统资源分配与调度原则。 •稳定业务关系模型(实体、关系、协同动作)。 制定系统身份识别、认证、命名、存取控制的策略。 规划系统静态特征和动态行为转化模型。 确立系统级的基础框架组成,穗定架构基线。 按照外界环境与内在制约因素选择相应的开发流程,规划开发环境、开发工具、测 试工具、版本控制工具等。 确定监控与报告流程,选择有效的汇总、统计、分析、报告工具。 为软件设计与开发制定架构约束及架构原则,并确保后续的开发遵守了这些原则。 软件系统许可证/软件key的规划及策略。 软件系统的部署、初始化、装栽顺序、卸栽顺序、运行监控等系统运行时的规划。 软件系统测试、交付的原则及计划。 按照外界环境与内在制约因素选择相应的开发技术。 规划软件系统哪些部分自主开发,哪些部分外包开发或外购产品。 从上述这些工作来看,有些是针对商业方面的问题,这些问题是核心问题,也是架构 师的目标。还有些问题是专门针对系统级别方面的,有些则是针对技术方面的问题。我们 可以把这些问题整合归类为如下一些方面,如图3-1所示。 ■ 3.1解决商业问题 我们先来看看如何解决商业方面的问题

第一章

孤者浪人 提交于 2019-12-06 15:16:21
就在同一时期,其他的相关研究也正逐渐起步。这些研究的目的是试图从那些非正式、 不标准的经验知识中,提炼和组织出构造软件架构可利用的、相似的问题解决手段和设计 风格。这样,研究的成果就可以被不同的领域、在解决相似的问题时所重用。这些研究都 是针对当时一些著名系统进行分析和总结的,试图识别出那些通用的系统架构风格和设计 手法。其中,由Gregory Andrews领导的研究小组,分析和识别了很多不同类型系统的架 构形式;由Robert Allen和David Garlan领导的研究小组,尝试找到和应用一些通用的方 法来描述不随型的系统结构。他们的不懈努力最终奠定了后人前进的基石。1992年以后, 后人在他们研究成果的基础上,完善和建立了一些著名的系统架构风格,例如:pipe-filter 架构风格、repository架构风格、隐式调用、流程协同等。他们的研究成果和基础思想,直 到今天还被很多文章引用。 架构基本概念和模型的确立它是以五个方面的长足进展为标志的:架构推述语言的发展、 初步的架构表述及分析规則的制定、架构元素及架构风格的分类研究、架构的评估方法(例 如SAAM)、可借鉴的架构视角(例如4+1视角)。处于这个阶段的人们下意识地把主要 的精力放在了所有软件系统结构中可能具有的共性方面。希望通过总结性的研究,发现那 些在实践中反复出现的、具有共性的结构

网络编程

*爱你&永不变心* 提交于 2019-12-06 15:09:31
目录 网络编程 一、软件开发架构 二、互联网协议 网络编程 一、软件开发架构 C/S架构:客户端与服务器端架构 C就是Client:客户端 S就是Server:服务端 客户端一般指客户端应用程序exe,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖很大 比如:微信客户端、QQ客户端等 优点 软件的使用稳定 节省网络资源 缺点 安装麻烦,用户体验差 软件的每一次更新,用户都需要重新下载或更新版本 B/S架构:浏览器端与服务器端架构 B就是Browser:浏览器端 S就是Server:服务器端 Browser浏览器端,其实也是客户端,只是这个客户端并不需要大家去装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查 比如:淘宝网页版、京东网页版等 优点 软件的使用方便 无须跟着软件的更新去下载 缺点 如果网络不稳定,软件的使用就不稳定 二、互联网协议 计算机与计算机之间通信 语言 是人与人之间沟通的介质 协议 是计算机与计算机之间沟通的介质 互联网协议按照功能 不同分为OSI七层或TCP/IP五层或TCP/IP四层 ​ 这七层协议从下往上记会比较好记 连接通信 交换机 :所有连接了同一个交换机的电脑彼此之间都是互联的 三层交换机:既有叫交换机功能,又具有路由器功能 四层交换机

零中频架构,这个帖子讲透了

允我心安 提交于 2019-12-06 15:08:18
零中频(ZIF)架构自无线电初期即已出现。如今,ZIF架构可以在几乎所有消费无线电应用中找到,无论是电视、手机,还是蓝牙技术。ZIF技术取得的最新进步对现有高性能无线电架构形成了挑战,其带来的新产品取得了性能上的突破,能够实现ZIF技术以前望尘莫及的新型应用。本文将探讨ZIF架构的诸多优势,介绍这些优势如何使无线电设计性能达到的新高度。 无线电工程师面临的挑战 不断增多的需求给当今的收发器架构师带来了挑战,因为我们对无线设备和应用的需求呈持续增长之势。结果,消费者需要持续访问更多的带宽。 数年以来,设计师已经从单载波无线电走向多载波无线电技术。当一个频段的频谱被全部占用时,就分配新的频段;目前,必须为40多个无线频段提供服务。由于运营商在多个频段都有频谱,并且这些资源必须协调起来,所以,如今的趋势是走向载波聚合,而载波聚合则会导致多频段无线电。这又会带来更多的无线电,其性能更高,需要更优秀的带外抑制性能,更出色的辐射性能,以及更低的功耗水平。 虽然无线需求在快速增长,但功耗和空间预算并未增长。事实上,在功耗和空间节省需求不断增强的条件下,同时降低碳排放和物理尺寸非常重要。为了实现这些目标,需要从新的视角去认识无线电架构和分区。 集成 为了增加特定设计中的无线电数目,必须减小每件无线电器件的尺寸。传统方法是逐步把更多的设计集成到一片硅片当中。虽然从数字角度来看,这样做可能是合理的

Socket套接字

拜拜、爱过 提交于 2019-12-06 14:58:50
网络编程 1.服务器端与客户端 BS架构(web网站) CS架构(client+server) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 2.OSI七层模型 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 每层运行常见物理设备 详细参考: http://www.cnblogs.com/linhaifeng/articles/5937962.html#_label4 学习socket一定要学习互联网协议: 1.首先:本节课的目标就是会教你如何基于socket编程,来开发一款自己的C/S架构软件 2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的 3.然后:网络的核心即一堆协议,协议即标准,你想开发一款基于网络通信的软件,就必须遵循这些标准。 4.最后:就让我们从这些标准开始研究,开启我们的socket编程之旅 TCP/IP协议族包括运输层、网络层、链路层 注: ICMP:是Internet控制报文协议,是TCP/IP族的一个子协议,用于在IP主机、路由器之间传递控制消息。 其功能主要有: 1.侦测远端主机是否存在 2.建立及维护路由资料 3.重导资料传输路径 4.资料流量控制 ARP:地址解析协议。是根据IP 来源: https://www.cnblogs.com/ximi07/p/11991373