架构设计

大数据平台架构设计探究

北城余情 提交于 2020-03-17 11:07:12
近年来,随着IT技术与大数据、机器学习、算法方向的不断发展,越来越多的企业都意识到了数据存在的价值,将数据作为自身宝贵的资产进行管理,利用大数据和机器学习能力去挖掘、识别、利用数据资产。如果缺乏有效的数据整体架构设计或者部分能力缺失,会导致业务层难以直接利用大数据大数据,大数据和业务产生了巨大的鸿沟,这道鸿沟的出现导致企业在使用大数据的过程中出现数据不可知、需求难实现、数据难共享等一系列问题,本文介绍了一些数据平台设计思路来帮助业务减少数据开发中的痛点和难点。 本文主要包括以下几个章节: 本文第一部分介绍一下大数据基础组件和相关知识。 第二部分会介绍lambda架构和kappa架构。 第三部分会介绍lambda和kappa架构模式下的一般大数据架构 第四部分介绍裸露的数据架构体系下数据端到端难点以及痛点。 第五部分介绍优秀的大数据架构整体设计 从第五部分以后都是在介绍通过各种数据平台和组件将这些大数据组件结合起来打造一套高效、易用的数据平台来提高业务系统效能,让业务开发不在畏惧复杂的数据开发组件,无需关注底层实现,只需要会使用SQL就可以完成一站式开发,完成数据回流,让大数据不再是数据工程师才有的技能。 一、大数据技术栈 大数据整体流程涉及很多模块,每一个模块都比较复杂,下图列出这些模块和组件以及他们的功能特性,后续会有专题去详细介绍相关模块领域知识,例如数据采集、数据传输

如何设计分层架构和交互接口 API ?

[亡魂溺海] 提交于 2020-03-14 09:12:20
架构设计流程 在「 如何建立架构师的立体化思维? 」这篇文章中, 老兵哥 跟大家一起聊到架构设计涉及业务、技术、系统和时间等几个维度,也知道从技术维度可以将应用分成七层,那具体怎么做呢?今天我们继续来聊聊分层架构的设计流程,以及接口设计方法等内容。通常,我们可以将分层架构的设计流程分解为下列 4 个步骤: 第一步,结合现实情况,将系统划分成多个层次。 第二步,确定层与层之间的关系,梳理出层与层之间的交互接口。 第三步,将功能相近的接口划归到一个模块,确保模块高内聚,对外低耦合。 第四步,在此基础上进一步明晰接口的参数列表。 仅仅四个步骤就完成了架构设计吗?这会不会太简单空洞了呢?各位看官,不要着急,请听蔡老师慢慢道来,每个步骤都有极具可操作性的方法及工具。 图 5 架构设计流程 层次的切分方法 面对一个庞然大物,你该如何下手呢?不用担心,这已经给你准备了庖丁解牛的方法,轻轻松松把一个复杂的大系统变得可以掌控了。 第一刀: 按照这套方法论来进行架构设计,最理想的情况是将 X 轴切分成七层。而第一刀应该先切在业务和领域之间,即通过 API 把两边解耦。交互和业务跟用户关联度高,经常随需求变化而改动,而领域和资源相对比较稳定。 第二刀: 考虑到要完成某些业务功能,系统可能需要调用外部系统协同完成,为了保证领域层相对稳定,我们需要隔离外部系统或数据持久层变化带来的影响

如何建立架构师所需的立体化思维?【1】

醉酒当歌 提交于 2020-03-13 05:11:27
从程序员往架构师转型的路上,蔡学镛老师总结的“四维架构设计方法论”对我颇有帮助,让我对架构设计有了更立体化、系统化的认知,现将学习心得分享出来供需要的小伙伴参考。 这套方法论通过空间( X 、 Y 、 Z )三个维度及时间 T 维度将问题域解构成可以轻松应对的小方块,分而治之。同时,空间( X 、 Y 、 Z )三个维度联动,专门为单个维度解决不了的问题提供解决方案。时间 T 维度将问题分解到一个时间范围内,分步骤按节奏逐一解决。多维度、立体化、分层次、动态演进,这是我对这套方法论特点的总结。 接下来,让我们进入这个四维的架构时空一探究竟! 图 1 四维座标系统 前后端维度( X1 … X7 ) 前后端维度被分解为交互、业务、领域、资源四大层,其中业务可以细分为应用 X2 、框架 X3 ,领域可以细分为服务 X4 、核心 X5 ,资源也可以细分为代理 X6 、数据 X7 ,共分为七个层次。服务 X4 可以实现 API ,如果公开,就是开放接口,调用服务层的接口,通常需要授权。代理 X6 可以实现 SPI ,隔离耦合,避免核心 X5 依赖特定的外部系统或数据库。每个层次做到高内聚,层与层之间做到低耦合。 图 2 X 轴分层结构 在系统实现过程中,可以综合考虑现状, X2 应用和 X3 框架可以不分拆, X4 服务和 X5 核心可以不分拆,待后续时机成熟可以再重构分层

架构设计中服务层的简单理解

∥☆過路亽.° 提交于 2020-03-11 20:33:22
如果你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM、架构师的大家庭 在ddd设计中我们经常会提到服务层,服务层是什么?职责是什么?有什么好处?。 先看简单的层次图(注:这里并没有考虑其他多余的领域逻辑数据层存储,或者UOW这些细节) 我的理解是服务层是处于我的应用程序业务层和表现层之间的应用程序边界,边界可能是很薄的一层类设计或者是分布式服务网络跃点。它是一个与技术无关的名词。由表现层直接调用,契约,执行命令(修改状态(CUD))或者是查询返回dto(数据迁移对象)(cms,命令-查询分离)。他对业务逻辑层接口很清楚,组织业务逻辑 微服务形成宏服务,适配表现层。 这里谈到宏服务和微服务,宏服务有一些列粗粒度的服务组成。用户的一次操作usecase,比如电子商务下单,CreateOrder就是一个宏服务,而不是下单中的细粒度的商品库存检查,订单合法性等。而与之对应的微服务(有时也叫应用程序服务),则表现为问题领域逻辑细节,就如上面的库存检查和合法性检查这些细粒度的服务。宏服务是由一个或者多个微服务组成,有时我们的usecase逻辑很简单服务层仅由单一微服务组成,变现为很简单的几句微服务调用。 服务层的职责: 1:在面软件开发不管是结构化编程(sp)还是面向对象编程(oop)我们一直都强调高内聚低耦合,分离关注点(soc)。服务层处于应用程序和业务层之间

高并发大型网站架构设计

删除回忆录丶 提交于 2020-03-09 10:42:48
高性能服务器架构思路——分布式系统概念>>> » 一个大型的网站网站应该由如下6个子系统组成 负载均衡系统 反向代理系统 Web服务器系统 分布式存储系统 底层服务系统 数据库集群系统 为什么要做高并发系统设计? 事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,能达到上万已经很不错了。目前的门户网站动辄几千万的访问量,所以,高并发的系统架构在所难免。 整体架构 真实中的网站架构也许并不如此也可以实现高性能。但是高性能的网站莫不过如此。如下图所示。 第一 负载均衡系统 负载均衡系统分为硬件和软件两种。 硬件负载均衡效率高,但是价格贵,比如 F5等。 软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如 lvs。 第二 反向代理系统 目前普遍使用Squid或者nginx,或者Lighttpd,Varish。 这四者又各自有很大的差异。 Squid:主要用来做反向代理,使用内存+硬盘 Nginx:可以反向代理+负载均衡+WWW解析

数字化转型促进制造业的高质量发展

雨燕双飞 提交于 2020-03-09 05:36:11
数字化转型在这个经济社会中正处在较为关键的时期,只有大力发展数字经济,才可能帮助企业深化经济和数字经济融合发展,加快推进新旧动能接续转换、不断提升各个企业的供给质量。近些年来制造业的数字化、智能化已成为目前新一轮工业革命的核心技术,全球范围站内的制造业也迎来了数字化转型变革的新时代。 对制造业企业来说只有将数字化转型与互联网融合发展,才能推动大数据、云计算、工业互联网广泛应用,从而帮助制造业的高质量发展迈上新台阶。欣思博研究发现我国正处在一个切入点中,因此要把握好数字化、网络化、智能化融合发展的契机,培育高质量发展的新动能,更准确的寻找出适合企业自身的解决方案。 那么对于企业来说应该如何进行呢? 1、 加强整体的架构设计 只有加强制造业数字化转型的顶层架构设计工作,才会帮助企业更快推进数字化转型的工作,并加快构筑全流程、全产业链、全生命周期的制造企业数据链接。其次利用新一代信息技术对传统制造业进行全方位、全角度的改造,全面提升制造业的发展质量。随后再进一步的推动设备、生产线自动化、数字化改造,进一步提升制造业企业关键工序数控化率和数字化生产设备联网率。如此才能促进升级企业信息化系统,推动企业普及应用基础信息系统,支持企业升级设计仿真、制造执行等新型信息系统。 但在构建数字化总体架构时,需要注意产品从生产到物流、销售、服务等整个生命周期流程,并且建议在制造业数字化总体架构下

嵌入式项目管理心得

旧城冷巷雨未停 提交于 2020-03-08 20:28:53
管理项目和管理房屋装修有很多相似点。首先需求分析-中式装修还是欧式装修,架构设计-绘制装饰图;接着模块实现-硬装,软装,水工,电工,木工,瓦工;再者联调-各工种合作;最后家具进场保洁交付-产品上线。 要想项目管的好,就需要客户需求提炼本质,架构设计的扩展性好,层级划分清晰,模块内聚,具体实施者做事靠谱,开发有实力,逻辑清晰,联调配合顺畅,测试case覆盖需求全面。 若涉及到结构件,电子件,还需要确认模具,EMC,若有无线传输,还需要无线准入测试,以及产品的认证。 大多数员工工作的主要动力是薪水,其次是兴趣。若把兴趣调动起来,工作效率就变高了。拉来项目的是老板,老板精通财务或市场,对技术是门外汉。因而公司组织架构对产品开发不是最优的,往往流程不畅。流程不畅往往会导致扯皮。这时很强的人格魅力,沟通技巧,处事的方法,深入浅出的技术解释能力,就会派上用场。真心诚意的和一线开发者沟通,效果最好。从经济效益出发,才能得到市场人员的赞同。 项目管理,心理要装着一条线(产品开发流程) ,各部门接口(考虑的方面全),抓住两头(需求,交付)。同时要学会控制自己的心情,不以对方修为高低,语言粗俗和高雅,都不需要记心里。学会适当的放空自己,放下心中以有成见,才能做到客观公正。 来源: CSDN 作者: 糟心的事太多,唯有写作可以解忧! 链接: https://blog.csdn.net/weixin

如何编写投标项目系统设计方案?

强颜欢笑 提交于 2020-03-03 00:43:51
《评标办法》在技术部分要求投标人对所投项目进行系统设计方案应答,该指标占投标书分值的32%,评标办法具体内容参见 [投标项目需求分析和应答一节]。 系统设计方案反映了投标人在对所投项目需求理解的基础上,设计和架构系统的能力以及设计的系统是否满足项目需求。评标办法要求在系统设计方案部分响应架构设计、功能设计、安全设计、数据流和逻辑关系设计、接口规划与设计、技术应用方式等指标。 系统设计对于做过几年软件研发经验的编程人员来说,应该不是什么难事。相信看本书的人不是项目经理就是准备要走向项目经理的人群,其系统分析能力和设计能力不会很差。 1、架构设计 架构设计描述了系统内部之间各系统构件的连接方式、组成方式、以及构件之间的关联和交互方式。 要进行架构设计,首先要明确技术体系。技术体系在系统体系结构一节已经明确要采用B/S技术体系。因此,架构设计采用三层结构,分别是客户层(浏览器)、业务层(WEB服务层)、数据层(数据库访问层)。 客户层应用Ajax、JSP、XML等技术,向WEB服务层发送请求和数据交互。 WEB服务层部署WEB应用,包括SAAS服务,为实现系统运行过程中可随时添加和删减业务,WEB服务层可细分为控制层、业务逻辑层、基础组件层,组件容器采用EJB技术。 数据层可细分为数据访问和数据存储。 整个系统架构采用J2EE技术。系统架构如下图所示: 系统架构图 2、功能设计

架构设计流程

无人久伴 提交于 2020-02-28 06:57:52
今天我们来总结一下架构设计流程,谈到架构设计我们先了解一下架构设计的原则 架构设计原则 架构设计主要可以归纳为三大原则 合适原则 简单原则 演化原则 合适原则 没那么多人,却想干那么多活,是失败的第一个主要原因 没有那么多积累,却想一步登天,是失败的第二个主要原因 没有那么卓越的业务场景,却幻想灵光一闪成为天才,是失败的第三个主要原因 简单原则 “复杂”在制造领域代表先进,在建筑领域代表领先,但在软件领域,却恰恰相反,代表的是“问题”。 软件领域的复杂性体现在以下两个方面 结构的复杂性 结构复杂的系统几乎毫无例外地具备两个特点 : 组成复杂系统的组件数量更多,同时这些 组件之间的关系也更加复杂 结构上的复杂性存在的第一个问题是 : 组件越多,就越有可能其中某个组件出现故障,从 而导致系统故障 结构上的复杂性存在的第二个问题是:某个组件改动,会影响关联的所有组件,这些被影 响的组件同样会继续递归影响更多的组件 结构上的复杂性存在的第三个问题是 : 定位一个复杂系统中的问题总是比简单系统更加困 难。首先是组件多,每个组件都有嫌疑,因此要逐一排查:其次组件间的关系复杂,有可能表 现故障的组件并不是真正问题的根源 逻辑复杂性 看到结构复杂性后,我们的第一反应可能就是“降低组件数量”,毕竟组件数量越少,系统 结构越简单。最简单的结构当然就是整个系统只有一个组件,即系统本身,所有的功能和逻辑