架构

从几幅架构图中偷得半点海量数据处理经验

拥有回忆 提交于 2020-01-09 01:28:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近对海量数据处理发生了不小的兴趣,特此从一些精彩文章中摘取几幅精彩的图片或片段,拿来给大家分享。所谓奇文共欣赏,好Architecture共品之。至于各位能从图中是窥得半点经验,还是一图以窥全貌,则不在我之责任,全在于读者怎么去解读这几幅精彩的架构图了。 所以,本文在选取一些架构图之后,只配以最简单的文字,个中内容,读者自行品味之。如果有任何问题或建议,欢迎不吝指正或畅所欲言。谢谢。 1、淘宝海量数据产品技术架构 上图是淘宝的数据魔方。按照数据的流向来划分,淘宝的数据产品的技术架构分为五层(如上图所示),分别是数据源、计算层、存储层、查询层和产品层(图摘自《程序员》8月刊)。 2、搜索引擎架构图 3、Facebook架构 3.1、架构概览 设计原则 尽可能的使用开源软件,并且在需要优化的时候进行优化 Unix 哲学。包括,模块化原则;整合化原则;清晰化原则等 任何组件具备扩展性;最小化故障影响;简化,简化,简化(本段文字摘自DBA nots)。 3.2、Facebook NewsFeed 的架构示意图 3.3、Facebook 搜索功能的架构示意图 .................. @ hawksoft:处理海量数据的基本思路就是分而治之的策略和流水线作业。虽然从单个的计算效率来说

Android Binder机制学习

久未见 提交于 2020-01-09 00:27:58
Binder机制是什么: Binder机制是​ Android系统中进程间通讯(IPC)的一种方式,Android中ContentProvider、Intent、aidl都是基于Binder。 为什么要用Binder机制: 在提及Binder之前,我们先看看我们平时开发的app的状况。每个app就像孤岛一样,生活在系统分配给自己的虚拟机和内存空间,好处是安全,各个app不会互相影响到对方,IE一个网页的崩溃却会导致整个IE应用程序死亡(举个小栗子,IE不属于跨进程)。在这种情况下,必须有一种机制,提供安全高效的通信的功能,Binder就为此而生。所以,Binder是Android系统的一种IPC(进程间通信)方式。ActivityManagerService、WinderManagerService等系统服务的背后都是Binder。 Binder机制的好处: 进程通信大概就两个方面因素,一者性能方面,传输效率问题,传统的管道队列模式采用内存缓冲区的方式,数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程,而socket都知道传输效率低,开销大,用于跨网络进程交互比较多,共享内存虽然无需拷贝,但是不安全。 总结一下就是: Binder机制优点: 1、只需要进行一次数据拷贝,性能上仅次于共享内存 2、基于C/S架构,职责明确,架构清晰

中小型企业通用自动化运维架构【视频教程】

让人想犯罪 __ 提交于 2020-01-08 21:27:23
第1章 自动化运维架构 主要讲解了自动化运维的概念,分析了现在的自动化运维的面临的挑战。基于我对自动运维的理解,提出了中小企业自动化运维架构,并讲解了该架构。后续的章节,主要是实现这个架构。 1-1 课程介绍 试看 1-2 自动化运维流程 第2章 服务器批量管理 Ansible Ansible作为一个优秀的IT资产管理、配置工具,这一章主要讲解了Ansible的使用,包括Ansible的安装、配置、使用,并且在课程的最后,结合我们公司业务的需求,实际演示了如何使用Ansible Playbook功能实现Zabbix的安装。 2-1 Ansible的介绍及流程 2-2 Ansible安装配置 2-3 Ad-hoc和Inventory的基本使用 2-4 使用ansible实战MySQL安装操作 2-5 什么是Ansible playbook 2-6 使用playbook完成一个helloword以及介绍playbook的基本结构 2-7 使用playbook实战Python环境的安装 2-8 Ansible实战安装Zabbix_Shell版 2-9 Ansible实战安装Zabbix_Playbook版 第3章 监控报警 Zabbix Zabbix作为一个非常强大的监控管理工具,这一章主要讲解的Zabbix的安装、配置,介绍了Zabbix的主要功能和使用方法,并且在课程的最后

如何设计出优美的Web API?

故事扮演 提交于 2020-01-08 15:48:49
本 系列 前序文章索引: 程序员 为什么必须要懂架构? 架构到底是什么,你知道吗? 架构都有哪些,我该怎么选? 架构师都干什么,你知道吗? 练就哪些技能才胜任架构师? 架构师, 在开展工作的过程中需要对接老板、产品、项目、开发、测试、安全和运营等各种岗位角色,他们都是架构需要关注和服务的内部客户,他们的痛点就是架构工作的驱动因素。架构师就是要用专业技能“搞定”这些角色的需求,输出大家都能接受的解决方案,大家好才是真正的好。为了达成此目的,我们必须知道不同岗位的关注点。 老板产品 老板的主要职责就是定方向、找人、找钱,他对架构设计的要求就是在给定的预算、时间范围内研发出软件系统,推动公司的战略或战术得以实现,也就是说架构方案不能过于理想,不能超出预算和截止时间。自从苹果公司的乔布斯封神之后,现在的互联网公司都崇尚老板担当首席产品官,例如腾讯马化腾、微信张小龙、百度李彦宏等等。产品经理需要思考打造什么样的产品才能达成公司的战略或战术目的,他要综合考虑产品是否满足功能、质量和商业等需求,满足功能需求只能达到及格线,易用性、交互体验、性能、可靠性等质量需求能否满足才是产品达到优秀的关键,以及从商业角度考虑选择什么时机将产品推向市场,有节奏地推动用户和业务的不断增长等。 任何技术都是服务于业务的,架构主要是承上启下的作用,架构设计需要将老板和产品的战略战术规划跟开发实现衔接起来,例如

01.08 Day 24 - 管理设计篇之“边车模式”

独自空忆成欢 提交于 2020-01-08 10:01:49
大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 24 天,也是我第 24 次进行打卡这种操作。 今天我温习了该专栏里一篇叫《管理设计篇之“边车模式”》的文章。 关键词总结:边车模式设计(实现方式、优缺点)、边社设计重点(解决的问题)、边车设计注意事项(进程间通讯、服务协议标准化、应用容器技术、边车职责、边车操作、上下文传递机制)、边车设计适用的场景(扩展历史遗留系统、多语言环境、多个服务供应商、控制以及逻辑分离)、边社设计不适用的场景(架构不够复杂、服务间协议不统一、单体架构)。 所学总结: 边车模式设计 实现方式 SDK、Lib 或框架的方式; 边车的方式。 优缺点 软件包 :有侵入; 边车 :无侵入、增加复杂度、服务注册及健康检查、帮助服务发现寻址、日志监控、调用链跟踪、流控熔断、易于服务控制系统操作。 边社设计重点 解决的问题 将控制和逻辑进行分离; 解决服务调用中上下文的问题; 对控制类的功能进行统一地管控。 边车设计注意事项 进程间通讯 使用无侵入的方式。 服务协议标准化 使用标准统一的方式进行沟通。 应用容器技术 借助容器来降低各种复杂度。 边车职责 让边车只实现控制类的功能。 边车操作 尽量避免在边车里包含重试操作,除非操作是幂等的。 上下文传递机制 允许应用服务和边车的上下文进行传递操作。 边车设计适用的场景 扩展历史遗留系统

企业上云如何优化性能?

会有一股神秘感。 提交于 2020-01-07 18:47:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 应用系统上线运行后,随着系统数据量的不断增长、访问量的不断上升,系统的响应速度通常会越来越慢,尤其日常峰值情况下常不能满足业务需要,甚至出现应用服务中断的现象,给企业造成巨大的品牌损失和经济损失。大量数据表明,每0.1秒的核心体验响应时间延长会导致1%的营收下降。企业应用系统上云,如何在云端利用云的优势进行性能优化,是一个值得深入分析的重点问题。 性能优化的价值与策略 1、性能优化价值 性能是一个应用系统最重要的指标,除非没有选择,否则没有用户会忍受一个响应缓慢的应用系统或网站。大量数据表明,每0.1秒的核心体验响应时间延长会导致1%的营收下降。 应用系统上线运行后,随着系统数据量的不断增长、访问量的不断上升,系统的响应速度通常会越来越慢,尤其峰值情况下常不能满足业务需要,甚至出现应用服务中断,给企业造成巨大的品牌损失和经济损失,因此性能优化会显得至关重要。 通过性能优化,可以用更少的硬件资源,支撑更大量的业务发展,从而达到节省硬件成本的目的;同时,可以在有限资源的情况下,提升系统的响应能力,为用户带来更好的使用体验,促进业务增长。 2、性能优化策略 对于应用系统来说,用户从浏览器发出请求到数据库完成事务操作,中间需要经过很多环节,如果系统响应慢,必须对请求经过的各个环节进行分析,排查可能出现性能瓶颈的地方

RESTful

若如初见. 提交于 2020-01-07 17:14:55
RESTFUL是一种网络应用程序的设计风格和开发方式,基于 HTTP ,可以使用 XML 格式定义或 JSON 格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方 OTT 调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。 [1] 中文名 RESTful 外文名 Representational State Transfer 创始人 Roy Fielding 实 质 一种网络应用程序的设计风格和开发方式 应用场景 适用于移动互联网厂商作为业务使能接口的场景 所属领域 计算机科学技术 目录 1 相关定义 ▪ REST ▪ 原则条件 2 特点 3 RESTful与 RPC 4 RESTful架构 相关定义 编辑 REST REST (英文: Representational State Transfer ,简称 REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码

【转】构建可扩展的微博架构(qcon beijing 2010演讲) by Tim Yang

≯℡__Kan透↙ 提交于 2020-01-07 12:33:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在使用Twitter几年的时间里面,经常思考微博如何更好的实现,恰好最近几个月也参与了相关工作,大部分都是工程实践,总结实践会促生更具实际价值的理论。因此在QCon Beijing 2010这次演讲参考了不少网友的意见后选择了《构建可扩展微博架构》的题目。 由于在决定选题时知道来自Twitter总部有30万followers的@ nk 也会讲一个类似的题目,心中当时有点忐忑,最大的顾虑就是要讲的领域更他重叠,如果他讲得更深入,我就没必要班门弄斧了。后来考虑到以下几个原因还是决定继续 Twitter架构是单IDC设计,从它递增的tweet id就可以看出,后来当面向@nk提问也得到了证实。 中美网络环境差异,单IDC和多IDC有很多设计上的不同 大部分参会人员未必能对英文演讲有深入理解及感悟,中文的演讲可以讲一些细节解释更透彻。 Twitter对故障的容忍度大,国内公司对服务故障通常更敏感。因此国内架构师会考虑设计方案尽量简单可靠,服务需要更稳定。国外开发团队更倾向追求在工作中应用技术创新,因此会导致架构设计理念的不少差异。 演讲的slide如下,登录slideshare之后可以下载。 Build scalable microblog qcon beijing 2010 View more

亿级流量系统架构之如何设计高容错分布式计算系统

。_饼干妹妹 提交于 2020-01-07 11:42:19
一、写在前面 上篇文章 《大型系统架构演进之如何支撑百亿级数据的存储与计算》 ,聊了一下商家数据平台第一个阶段的架构演进。通过离线与实时计算链路的拆分,离线计算的增量计算优化,实时计算的滑动时间窗口计算引擎,分库分表 + 读写分离,等各种技术手段,支撑住了百亿量级的数据量的存储与计算。 我们先来回看一下当时的那个架构图,然后继续聊聊这套架构在面对高并发、高可用、高性能等各种技术挑战下,应该如何继续演进。 二、active-standby高可用架构 大家看看上面的那个架构图,有没有发现里面有一个比较致命的问题?就是如何避免系统单点故障! 在最初的部署架构下,因为数据平台系统对CPU、内存、磁盘的要求很高,所以我们是单机部署在一台较高配置的虚拟机上的,16核CPU、64G内存、SSD固态硬盘。这个机器的配置是可以保证数据平台系统在高负载之下正常运行的。 但是如果仅仅是单机部署数据平台系统的话,会导致致命的单点故障问题,也就是如果单台机器上部署的数据平台系统宕机的话,就会立马导致整套系统崩溃。 因此在初期的阶段,我们对数据平台实现了 active-standby的高可用架构 ,也就是一共部署在两台机器上,但是同一时间只有一台机器是会运行的,但是另外一台机器是备用的。处于active状态的系统会将滑动窗口计算引擎的计算状态和结果写入zookeeper中,作为元数据存储起来。 ●