架构

架构漫谈(三):如何做好架构之识别问题

谁说我不能喝 提交于 2020-03-02 08:21:04
架构漫谈(三):如何做好架构之识别问题 作者: 王概凯 来源: InfoQ 发布时间: 2016-04-17 10:47 阅读: 14714 次 推荐: 10 原文链接 [收藏]    上篇: 架构漫谈(二):认识概念是理解架构的基础   按照之前架构的定义,做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决80%了。这个能力基本上就决定了架构师的水平。    那么面对问题有哪些困难呢?   我们先看一则笑话。女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。   当然很多人会说,这个是沟通问题,然后一笑了之。其实,出现这个现象是由于我们大部分时候过于关注解决问题,急于完成自己的工作,而不关心“真正的问题是什么”而造成的。当我们去解决一个问题的时候,一定要先把问题搞清楚。这也是我为什么要单独写一篇文章讲这个的原因。去看看软件开发工作者的时间分配也可以看出,大家大部分时间花在讨论解决方案和实现的细节上,基本都不会花时间去想“问题是什么”。或者即使想了一点点,也是一闪而过,凭自己的直觉下判断。只有真正投入思考问题是什么的工程师,才可能会真正的成长为架构师   以这个笑话为例,看看在我们处理问题的时候,都会犯什么样的错误: 被告知要处理一个问题,但是交过来的实际上是一个解决方案,不是问题本身。

每个架构师都应该研究下康威定律

纵饮孤独 提交于 2020-03-02 07:31:31
摘要: 这篇文章的分享者杨波具有超过10年的互联网分布式系统研发和架构经验,曾先后就职于 eBay 中国研发中心(eBay CDC)、携程、唯品会(VIPShop)等。本文由攀爬的蜗牛以及田光整理。   今天的分享主要来自我之前的工作经验以及平时的学习总结和思考。我之前的背景主要是做框架、系统和平台架构,之前工作过的公司 eBay、携程、唯品会都是平台型互联网公司,所以今天主要带着平台架构视角和大家分享心得体会。架构的视角每个人都不一样,可以说一万种眼光,有业务架构、安全架构、平台架构、数据架构,各不相同,这里仅是我的一家之言,欢迎大家加入『聊聊架构』社群参与讨论。今天聊的话题主要包括以下几点: 我对架构定义的理解 架构的迭代和演化性 构建闭环反馈架构(Architecting for closed loop feedback) 谈谈微服务架构和最新主题 架构和组织文化关系 架构师心态和软技能 我对一些架构师争议主题的看法    我对架构定义的理解   大概在7~8年前,我曾经有一个美国对口的架构师 mentor,他对我讲架构其实是发现利益相关者(stakeholder),然后解决他们的关注点(concerns),后来我读到一本书《软件系统架构:使用视点和视角与利益相关者合作》,里面提到的理念也是这样说: 系统架构的目标是解决利益相关者的关注点。   这是从那本书里头的一张截图

springcloud微服务实战_01_基础知识

六月ゝ 毕业季﹏ 提交于 2020-03-02 07:24:15
1.1 什么是微服务架构 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作. 被拆分的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每一个服务都维护着各种的数据存储,业务开发,自动化测试以及独立部署机制. 由于有了轻量级的通信协作基础,所有这些微服务可以用不同的语言编写. 1.2 与单体架构的区别 在一个项目建设初期,由于业务不是很多,所以我们将这些业务全都放在一个一系统应用中进行开发.但是随着业务的大量聚集,一个简单的系统往往会变得十分臃肿,改动一个小的需求整个系统就需要重新部署上线,并且难以维护.慢慢的我们就将这个大的臃肿的项目拆分开为多个小型系统, 每个系统负责各自领域的业务.这些系统之间相互协调并且独立的开发与部署.由于是独立的部署,我们很容易准确的为每一个服务评估性能容量,通过配合服务间的协作流程也可以更容易的发现系统瓶颈位置,以及给予较为准确的系统性能容量评估. 1.3 如何实施微服务 微服务拆分的问题: 运维的新挑战 接口的一致性 需要更完善的接口与版本控制,以及更严格的开闭原则. 分布式的复杂性 拆分后的各个微服务都是独立部署并且运行独立的各自进程中,它们只能通过通信来进行协作

CPU体系结构的种类,特点及应用场景

时间秒杀一切 提交于 2020-03-02 01:46:38
一、CPU体系结构的种类 1.ARM ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 特点 :低功耗,低成本,低性能 应用场景 : 1.工业控制领域,作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2.网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 3.消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 4.成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SM智能卡也采用了ARM技术。 2.x86系列/Atom(安腾) IA 是Intel Architecture(英特尔体系架构)的简称,有IA-32和IA-64,均属于X86体系结构。 x86或80x86是英代尔Intel首先开发制造的一种微处理器体系结构的泛称。x86架构是重要地可变指令长度的CISC(复杂指令集电脑

架构:小型电商Web架构

﹥>﹥吖頭↗ 提交于 2020-03-01 23:28:48
电商网站的架构也是如此,现在牛逼的电商网站,看似很复杂,很牛逼,其实也是从很小的架构,也是从没什么技术含量开始的。架构的演化过程,就是在技术团队,不断追求极致的过程。 技术架构 一般,初期的电商网站,基本就几个业务子系统,网站前台,商家前台,系统管理后台,App,M站等。业务量,也不是很大。所以,mvc + 缓存 + 数据库 。基本就搞定了。 其实,单就开发效率而言,.net mvc 的技术架构不会比LAMP 开发速度慢。所以,一些企业,为了快速推出自己的电商平台,也会采用.net 架构。 基础架构 基础架构层面。这是一个很简单的基础架构了。 1:前端网站和M站,考虑到访问量和系统的可用性,基本会采用分布式部署。通过代理服务器进行请求分发。 2:其他的业务子系统,像商家前台,和管理系统,基本上都是单机或是主从部署。 3:各个DB ,Redis 服务和 文件和图片服务,搜索引擎Solr服务等,采用主从部署。 详细架构 整个系统架构里面,还有一个比较重要的组成部分,那就是监控系统。例如:流量监控,硬件监控,系统性能监控等, 还有就是对某个页面进行监控,设置页面的其中一块进行监控等。它是提高整个平台可用性的一个重要手段,多平台,多个维度的监控,能够确保系统的可用性,一旦出现异常,特别在硬件或者性能方面出现异常,监控系统也能立刻发出警告,这样也好防范于未然。 日志系统与监控系统的解决方案

浅析Chrome浏览器的多进程架构

梦想与她 提交于 2020-03-01 20:50:40
无论你是设计高性能的Web应用,还是从事Electron开发,或是从事Node.js扩展C++开发,了解Chrome的多进程架构以及网络流程、页面渲染过程、JavaScript执行流程等知识,是很有必要的。这一章,我在这里为大家浅析一下Chrome的多进程架构原理。 Chrome进程在任务管理器中的样子 下面这幅图就是打开Chrome浏览器初始页面时,在任务管理器中看到的chrome多进程的样子。 我们在Chrome中仅仅打开了一个默认的页面,怎么出现了这么多的进程呢? 单进程浏览器 我们知道,进程是程序的一个运行实例。详细解释就是,启动一个程序(比如Windows中的exe程序)的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。 在早年间(2007年之前),浏览器也是单进程运行的。浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript运行环境、渲染引擎和页面等。单进程浏览器的架构如下图所示: 如此多的功能模块运行在一个进程里,是导致单进程浏览器 不稳定 、 不流畅 和 不安全 的一个主要原因。 不稳定 早期浏览器需要借助于 插件 来实现诸如Web视频、Web游戏等各种强大的功能,印象深刻的就是各种flash插件,但是插件是最容易出问题的模块,并且还运行在浏览器进程之中

lecture 19:Architectures:GPS,SOAR,Subsumption,Society of Mind

别等时光非礼了梦想. 提交于 2020-03-01 20:10:03
架构:GPS、SOAR、包容架构、心智社会 我们讲了表示,讲了方法,这节课将讲架构。然后,我们可以知道怎么讲他们融合起来。 从人工智能的黎明dawn时期开始,卡内基梅隆大学的Newell和Simon,首先想到了一种将事物融合到一起的通用方式来构建一个structure或者说architecture,叫做general problem solver,测量起始和目标两者之间的象征性差异symbolic difference,通常称作手段目的分析。要使用这个方法需要人类解决差异检测和算子寻找,但这是一个很难的工作。 Newell和他的学生开发出了更好的架构SOAR。SOAR包含很多部分,LTM、STM以及可世界的联系(一个视觉系统或动作系统)。 这两种架构分别是聚焦于 问题解决problem solving hypothesis 和 象征性系统假设symbol system hypothesis 的。这两种架构都偏向于问题求解导向,这类架构最重要的莫过于马文的emotion machine,不仅关注问题解决,更关注不同层级的问题解决,比如我饿了,瞬间想到吃饭,这是本能层级的反应,接着我想到上次饿了吃的太快肚子疼,这是有意思考的层级的反应。这方面也是计算机的弱点,换句话说,计算机没有常识。 Brooks的Subsumption架构,no representations,no models

什么是微服务?

╄→гoц情女王★ 提交于 2020-03-01 20:06:45
1.聊微服务之前,应该先了解一下什么是SOA? 对单体应用的改进:引入SOA(Service-Oriented Architecture)面向服务架构,拆分系统,用服务的流程化来实现业务的灵活性。服务间需要某些方法进行连接,面向接口等,它是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在于操作系统进程中。各个服务之间 通过网络调用。但是还是需要用些方法来进行服务组合,有可能还是个单体应用。 所以微服务,是SOA思想的一种具体实践。 微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 2.微服务的定义 无严格定义。微服务是一种架构风格,将单体应用划分为小型的服务单元。 微服务架构是一种使用一系列粒度较小的服务来开发单个应用的方式;每个服务运行在自己的进程中;服务间采用轻量级的方式进行通信(通常是HTTP API);这些服务是基于业务逻辑和范围,通过自动化部署的机制来独立部署的,并且服务的集中管理应该是最低限度的,即每个服务可以采用不同的编程语言编写,使用不同的数据存储技术。 英文定义: https://www.martinfowler.com/articles/microservices.html 3.微服务特性 1.独立运行在自己进程中。 2.一系列独立服务共同构建起整个系统。 3

嵌入式课堂整理1

≯℡__Kan透↙ 提交于 2020-03-01 17:05:19
一、嵌入式开发概述 1.嵌入式技术是什么? 答:在已有的硬件上移植操作系统;在操作系统之上做上层应用开发,在操作系统之下做底层开发。 2嵌入式软件与非嵌入式软件的区别? 答:最大的区别是有无操作系统。嵌入式技术有操作系统,非嵌入式没有操作系统。 3.嵌入式开发与单片机开发的区别? 答:嵌入式开发有操作系统,单片机开发属于传统开发,只有软件和硬件,没有操作系统。 4.传统开发的缺点? 答:软件移植能力差(适配平台能力差);开发人员能力要求需要软硬件掌握的都很好。 5.嵌入式开发的优点? 答:嵌入式在软硬件之间加入了操作系统;操作系统具有管理软件资源和硬件资源的作用。属于多任务机制,提供了丰富的网络协议,提供了开源软件和库。 二、嵌入式开发方向 1.嵌入式上层应用软件开发。(精通一门语言;熟悉一款操作系统;熟悉数据结构算法) 2.嵌入式底层系统软件开发。(精通C语言;理解操作系统的实现;熟悉硬件的工作原理;熟悉汇编) 3.嵌入式工程师。 三、作业 CPI体系结构的种类、特点及应用场景?(内容参考csdn的博主@printfd) 1、ARM ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 特点:体积小、低功耗、低成本

NSX介绍-翻译

心已入冬 提交于 2020-03-01 14:41:09
第二章,网络虚拟化介绍 2.1 NSX网络虚拟化解决方案综述 NSX产品的部署形态,包括数据平面、管理平面和控制平面,如图4所示。 图4:NSX组成 NSX架构的原理是将数据、控制、管理层面分离。NSX的组件构成,每个组件的架构都在图4中给出了展示。分离的架构设计,可以让NSX整体架构不断扩大,并且规模不受负载的影响。每一个层面以及各自的整体描述,会在下边详细描述。 2.1.1数据层面 数据层面是通过NSX的vSwitch实现的。NSX提供给vSphere的vSwitch,是基于VDS实现的,这个VDS是通过增加额外组件实现的比之前更强大的虚拟分布式交换。NSX的可扩展组件包括内核模块,都是按照VMware软件的分布式部署方式扩展的。这些模块都运行在hypervisor层。能够提供的服务包扩:分布式路由、分布式防火墙以及vxlan到vlan的桥接。 NSX的VDS精简了物理网络,比方说在hypervisor层实现的接入层交换机。这对于虚拟化的网络能够在逻辑上不受物理网络架构限制是及其重要的。 NSX的vSwitch之所以能够实现现在的能力,是因为其使用vxlan协议的overlay技术,以及集中式的网络架构。基于overlay技术的NSX使一下部分成为可能: 在现有的物理网络架构下,通过IP网络overlay技术构建灵活的二层网络。