架构

greenplum数据库引擎探究

余生长醉 提交于 2020-01-16 05:09:36
Greenplum做为新一代的数据库引擎,有着良好的发展与应用前景。强大的工作效率,低成本的硬件平台对数据仓库与商业智能建设有很大的吸引力。要清楚的了解其特点最好从架构着手。 架构分析 Greenplum的高性能得益于其良好的体系结构。Greenplum的架构采用了MPP(大规模并行处理)。在 MPP 系统中,每个 SMP 节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配 (Data Redistribution) 。与传统的SMP架构明显不同,通常情况下,MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点,但是这也不是绝对的,因为MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那MPP系统就不占优势了,相反,如果通信时间比较少,那MPP系统可以充分发挥资源的优势,达到高效率。当前使用的OTLP程序中,用户访问一个中心数据库,如果采用SMP系统结构,它的效率要比采用MPP结构要快得多。而MPP系统在决策支持和数据挖掘方面显示了优势,可以这样说,如果操作相互之间没有什么关系,处理单元之间需要进行的通信比较少

UML企业项目设计工具Visual Paradigm新功能详解之DoDAF 工具

让人想犯罪 __ 提交于 2020-01-15 16:06:01
Visual Paradigm 是包含设计共享、线框图和数据库设计新特性的企业项目设计工具。只需要这样单独的一款模型软件 Visual Paradigm就可以完成用UML设计软件,用BPMN去执行业务流程分析,用ERD企业设计数据库的任务。 视觉范式与DoDAF Visual Paradigm提供了一个易于使用的,模型驱动的解决方案,该解决方案支持DoDAF 2.02视图和模型的开发。 创建集成的DoDAF产品,并在视图之间保持可追溯性。 生成有助于组织有效地协调企业架构计划的架构文档。 通过网格视图进行有效的视图管理 DoDAF的网格介面助您有效地管架构工件。架构师可以通过此界面轻松访问特定视图。 创建符合DoDAF的架构视图 Visual Paradigm扩展了UML以提供一组新的图类型,并为DoDAF视图创建量身定制了新的图工具栏,以确保您的体系结构描述将符合DoDAF指南和规范。 重用架构构件 通过简单的拖放操作,可以在任何其他视图中可视化在视图中创建的建筑构件。 修改模型将导致所有“替代视图”中相同模型的自动更新。 保持不同视图之间的可追溯性 使用关系矩阵工具或分析图表工具展示建筑构件之间的可追溯性。 瞬间生成DoDAF报告 从创建的视图和描述立即生成架构文档,或通过智能报表生成器“ Doc”创建自己的DoDAF报表。 作曲家'。 文档自动存储在文件存储库中,以备将来检索

dubbo与http区别

一世执手 提交于 2020-01-15 07:24:04
dubbo与http区别 相关概念 RPC、REST、Dubbo、HTTP、RMI区别 RPC、REST区别,通俗讲两者API设计风格不同,如下: 功能 RPC RESTful 提交功能 POST/submit POST/goods 查看商品列表 GET/lists?index=1 POST/goods/1234 两种风格的API区别: RPC面向过程,只发送 GET 和 POST 请求。GET用来查询信息,其他情况下一律用POST。请求参数是动词,直接描述动作本身。 RESTful面向资源,使用 POST、DELETE、PUT、GET 请求,分别对应增、删、改、查操作。请求参数是名词,这个名词就是“增删改查”想要操作的对象。 RPC与dubbo区别 PRC全称是Remote Procedure Call,即远程过程调用<通信方式的一种>,不仅仅是一种api设计风格。这个"远"的概念也不一定是跨越网络的,同一台主机的两个进程之间相互交流也完全可以是RPC。 Dubbo是一种分布式服务框架也是一种协议,dubbo框架默认使用dubbo协议。dubbo协议是阿里巴巴自己实现的一种应用层协议,传输层还是TCP。所以Dubbo协议与HTTP、FTP,SMTP这些应用层协议是并列的概念。除了默认的Dubbo协议,Dubbo框架还支持RMI、Hessian、HTTP等协议。

支付宝架构

狂风中的少年 提交于 2020-01-15 05:20:05
支付宝所使用的架构分为两类三层,分别是运维平台(IAAS),技术平台(PAAS),业务平台(SAAS)。这三个平台,分别从底层,中间层和应用层提供服务。 因为双十一当天的用户数量,访问量,以及所有的数据都会是平时的几倍,所以对系统的要求也相对提高了,还要提供一套完整的备灾方案和故障恢复体系。保障系统的正常运行。基于以上几个需求,我们提出了逻辑数据中心架构,核心思想是把数据水平拆分的思路向上层提到接入层、终端, 从接入层开始把系统分成多个单元,单元有几个特性: 1.每个单元对外是封闭的,包括系统间交换各类存储的访问; 2.每个单元的实时数据是独立的,不共享。而会员或配置类对延时性要求不高的数据可共享; 3.单元之间的通信统一管控,尽量走异步化消息。同步消息走单元代理方案; 同时这套架构解决以一些问题: 1.由于尽量减少了跨单元交互和使用异步化,使得异地部署成为可能。整个系统的水平可伸缩性大大提高,不再依赖同城IDC; 2.可以实现N+1的异地灾备策略,大大缩减灾备成本,同时确保灾备设施真实可用; 3.整个系统已无单点存在,大大提升了整体的高可用性;同城和异地部署的多个单元可用作互备的容灾设施,通过运维管控平台进行快速切换,有机会实现100%的持续可用率; 4.该架构下业务级别的流量入口和出口形成了统一的可管控、可路由的控制点,整体系统的可管控能力得到很大提升。基于该架构,线上压测

支付宝的技术架构及实践——阅读心得

雨燕双飞 提交于 2020-01-15 05:19:30
架构 支付宝的架构设计需要考虑到互联网金融业务的特殊性,比如要求更高的业务连续性,更好的高扩展性,更快速的支持新业务发展等特点。将 整个平台划分为三层: 1. 运维平台( IAAS):主要提供基础资源的可伸缩性,比如网络、存储、数据库、虚拟化、IDC ( 互联网数据中心 ) 等,保证底层系统平台的稳定性; 2. 技术平台( PAAS):主要提供可伸缩、高可用的分布式事务处理和服务计算能力,能够做到弹性资源的分配和访问控制,提供一套基础的中间件运行环境,屏蔽底层资源的复杂性; 3. 业务平台( SAAS):提供随时随地高可用的支付服务,并且提供一个安全易用的开放支付应用开发平台。 图示如下。 可伸缩性的含义: 种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。 简单的说就是做更多的事情。 架构特性 逻辑数据中心架构 双十一大促当天业务量倍增,系统的复杂度越来越高,之前按照点的伸缩性架构无法满足要求,需要一套整体的可伸缩方案,可以按照一个单元的维度进行扩展。 能够提供支持异地伸缩的能力,提供 N+1 的灾备方案,提供整体性的故障恢复体系。 于是提出了 逻辑数据中心架构,核心思想是把数据水平拆分的思路向上层提到接入层、终端,

安居客Android项目架构演进

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-15 05:10:38
本文已授权微信公众号 AndroidDeveloper 独家发布。 入职安居客三年从工程师到Team Leader,见证了Android团队一路走来的发展历程。因此有心将这些记录下来与大家分享,也算是对自己三年来一部分工作的总结。希望对大家有所帮助,更希望能得到大家宝贵的建议。 一、三网合并 三年前入职时安居客在业务上刚完成了三网合并(新房、二手房、好租和商业地产多个平台多个网站合成现在的anjuke.com,这在公司的历史上称之为三网合并),因此app端也将原先的新房、二手房、好租和商业地产多个app合并成为了现在的安居客app。所谓的合并也差不多就是将多个项目的代码拷贝到了一起组成了新的Anjuke Project。下面这张图能更加直观的呈现当时的状况。 这一时期代码结构混乱、层次不清,各业务技术方案不统一,冗余代码充斥项目的各个角落;甚至连基本的包结构也是胡乱不堪,项目架构更是无从谈起。大家只不过是不停地往上堆砌代码添加新功能罢了。于是我进入公司的第一件事就是向Leader申请梳理了整个项目的结构。 而后随着项目的迭代,我们不断引入了Retrofit、UniversalImageLoader、OKHttp、ButterKnife等一系列成熟的开源库,同时我们也开发了自己的UI组件库UIComponent、基础工具库CommonUtils、基于第三方地图封装的MapSDK

架构师主要做些什么,你知道吗?

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-15 03:55:59
小伙伴们,新年好! 感谢大家对「 IT老兵哥 」原创文章的支持顶赞,❤️❤️❤️!把有价值的知识或经验分享给更多人,在分享中提升个人价值,这是我写作、分享的初衷和动力,在新的一年里我会更加努力,也希望能够继续获得各位小伙伴的支持!坚持原创不易,如果文章有价值,千万要记得手动点个「 👍 」哦! 祝大家新年在家庭、事业和生活上都有新的进步!关注「 IT老兵哥 」,赋能程序人生,我们一起加油干!⛽️⛽️⛽️ 年前我们一起聊了 程序员为什么要懂架构 、 架构是什么 和 架构都有哪些类型 这三个话题,今天我们来看看架构师是怎样开展工作的,他/她需要对接上下游哪些角色,以什么作为工作输入,最终要对外输出什么产物。这些内容既有助于我们跟架构岗同事更好的协作,也可以作为是否往架构转型的参考,接下来我们一起揭开架构师的神秘面纱吧! 1. 架构设计的输入是什么? 软件系统最终要构建成什么样,这是由项目干系人的各种要求决定的。通常,我们将这些要求归集在产品需求文档之中,这份产品需求就是架构设计的输入。我们可以将这些需求划分为: 功能需求:完成某项业务需要的功能操作,例如:共享单车客户端软件需要支持单车定位、扫码解锁等。 质量需求:每项功能操作要达到什么样的质量要求,例如:易用性、可靠性、安全性、性能等等。 商业需求:软件系统需要以什么样的成本、迭代速度推向市场,如何提升产品的市场竞争力等等。 2.

面试官:说一说微服务开发中的数据架构设计

放肆的年华 提交于 2020-01-15 01:35:19
前言 什么是微服务? 微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。 正文 微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容。 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主、副数据及数据解耦 要点3:分库分表 要点4:多源数据适配 要点5:多源数据缓存 要点6:数据集市 为了容易理解,本文用一个简化的销售模型来阐述,如下图。图1显示了客户、卖家、商品、定价、订单的关系(这里省略支付、物流等其他元素)。 图1 销售模型 在这个销售模型中,卖家提供商品、制定价格,客户选择产品购买、形成销售订单。根据微服务的理念设计,可以划分为客户服务、卖家服务

App后台开发运维——架构设计

六眼飞鱼酱① 提交于 2020-01-15 00:06:05
QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming 1.设计app架构 1.梳理app业务流程 2.整理业务流程可能遇到的问题 3.根据问题,探讨可执行的解决方案 4. app后台 初步架构 :3中所有技术进行有机融合 api编写: 1.api的作用(功能) 2.api需要输入的参数 3.api返回的数据 2.服务器选择 1.传统的IDC 在传统的IDC,要加cpu或内存,流程如下:   1.和客户经理商商谈所需硬件的价格   2.汇款过去,等IDC的财务确认   3.确认后,等待IDC安排工作人员升级硬件   这个流程走一次,最少也要1至2天。延迟了1至2天升级硬件,怎么保证可以快速应付爆发的业务 2.云服务器 升级硬件: 1.在用户后台选择需要的硬件配置   2.通过网络支付   3.重启服务器,升级就完成了。如果只是升级带宽,甚至不用重启。   整个过程合起来不用5分钟,简单,快捷,方便。   而且,现在的云服务器提供商,除了服务器外,还提供下面的服务:   负载均衡   云数据库   云内存存储   这些服务在app上线初期,在一台服务器上自己搭建就行了,   但随着app的发展,这些服务都需要部署在不同的服务器。      规模的增大,也要面对高可用,高并发,监控报警等问题。   这些问题如果都要后端人员处理

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候