精华内容
下载资源
问答
  • 互联网总体架构设计

    千次阅读 2019-07-05 16:45:45
    01 互联网发展三阶段 02 互联网架构演进之路 03 单体架构设计与实践 04 水平分层架构设计与实践 05 面向服务架构设计与实践 06 微服务架构设计与实践 07 服务网格架构设计与实践 08 千亿级互联网案例实践

    序言

      架构是用来唤醒智慧的,期望唤醒和您心中的架构共鸣,今年您在观察什么,希望我们英雄所见略同,有不同的看法欢迎评论留言,如果只是单单因为观点不同就被骂的狗血喷头,这可真是太过幼稚,现在的人太过浮躁,何必呢,有什么事是不能坐下来好好谈谈的?来,给您倒一杯卡布奇诺,咱们慢慢品。

    01 互联网发展三阶段

      互联网发展的三个阶段的特点依次是静态化、动态化、万物连接,容易理解,在其发展过程中,互动形式也发生了三个阶段的演进。
      微信和facebook最主要的发明就是群组和朋友圈,但实际上朋友圈不算微信的发明,微博在2.0阶段的feed流就已经做出了朋友圈的雏形。微信最厉害的地方就是群组,把关注的一对一关系,变成了多对多关系,互联网在发展过程中,也形成了以下特点:

    • 业务功能越来越多、越来越复杂
    • 万物互联、数据量越来越大
    • 请求量越来越大、更高的用户体验要求
    • 业务快速迭代、持续交付的能力

      做架构的目的不是为了炫技,为了让我们的产品快速迭代,持续交付,降低人力成本,机器成本,提升开发效率,提升运营效率。互联网架构为什么要演进?很显然,需求驱动架构演进
    在这里插入图片描述
    在这里插入图片描述

    02 互联网架构演进之路

    互联网架构演进
    在这里插入图片描述

    03 单体架构设计与实践

      单体架构适用场景:

    • 业务简单,功能不复杂,研发人员较少
    • 创业公司初期
    • 性能要求极其苛刻

      单体架构的优点:

    • 容易开发
    • 容易测试
    • 容易部署
    • 容易扩展

      单体架构的缺点:

    • 系统耦合性高
    • 技术选型单一
    • 开发效率越来越低下

    架构破局:

    • 垂直方向拆分(业务维度)例如用户模块,订单模块,商品模块。
    • 水平方向拆分(功能维度)垂直拆分后,用户模块依然是一个单体,在功能上继续拆分,网关层,业务逻辑层,数据访问层,数据库怎么拆,架构就怎么拆。

    04 水平分层架构设计与实践

      水平方向物理分为多个进程,每层逻辑解耦

    • 网关层
    • 业务逻辑层
    • 数据访问层
    • 数据存储层

    在这里插入图片描述
    在这里插入图片描述
      任意两层之间加入消息队列都可以从同步变为异步,每层和消息队列都是同步的。消息队列的高效来源于本身的顺序写入。在这里插入图片描述
      业界主流的网关开源组件,没有最好,只有更合适。
    在这里插入图片描述
      同步架构
    在这里插入图片描述
      异步架构
    在这里插入图片描述

    • 异步目的:提升吞吐量
    • 异步方式:消息队列
    • 适用场景一:请求类型(读请求不可以,写请求可以)
    • 适用场景二:业务类型(充值场景低并发用同步,社交场景高并发用异步)

      不是所有的请求都可以用MQ,读请求不能用MQ, 因为读请求是想要拿到这次请求的结果,比如说要查询一个用户的信息,瞬时要拿到用户的结果,这个请求通过网关到MQ,返回ok,难道这个用户就叫ok吗?写请求是可以用MQ的,所有的写请求都能用MQ吗?那又回到哲学本质了,所有的所有的一切都是不成立的。不是所有的写请求都可以用MQ的。写请求分两种,一种是对数据一致性强,比如充值场景。这个时候就不能用异步了,用同步架构就好了,一种是对数据一致性弱,比如社交场景可以写异步。也可以从业务的并发量来考虑,并发量低的用同步,并发量高的用异步。
      但是异步架构发生在写入请求后,我在读请求的时候MQ的消息还没有到DB,但是在写入的时候,已经告诉用户已经成功了,这个问题我们回到具体的业务场景。
      在我们发朋友圈的时候,很显然自己对马上要发的朋友圈最感兴趣,你绝对不会说,在发朋友圈之前,在群里去@大家说:我要发朋友圈了,你们来看一下,我相信你一定不会干这个事情,既然你不会干这个事情,你的朋友晚点看到朋友圈也是ok的,那这个时候只要解决自己看的问题就好了,这个时候只需要把本地发送的消息(朋友圈)客户端缓存一下,等到你下次再请求的时候,已经是很多秒以后的事情了,下次再请求的时候,写入的消息已经到DB了,用这种方式来解决用户看到有延迟的问题。但是这样也存在问题,虽然说这次可以骗过用户,但是消息是写到MQ里面的,最终是要把它写入到DB里面去的,但是从MQ到DB过程中,会出现网络异常,消息不合法等,最终消息是没法写入到DB里面去的。
      微信是这样做的,当微信消息(朋友圈)发成功以后,过一段时间如果没有发成功,会在最顶端提示您有一条消息未发送成功,让你重试一下 ,这是依靠微信app和网关的Socket长链接来实现的,一旦业务逻辑层处理失败后,会直接推给客户端,如果http没办法处理,那必须是长轮询来处理。

      异步架构会有一些负面的影响:

    • 请求路径边长
    • 平均响应延迟变高
    • 定位问题变的复杂化
    • 运维成本增加

    最终我们在实际应用中,同步架构分为四层,异步架构分为五层最合适,MVC这种架构已经逐渐的被淘汰了,在水平分层上选择四层或者5层架构。
    架构分层
      以上两种架构也存在严重的问题:部分层粒度过粗,如业务逻辑层包含了所有的业务逻辑。

      同步水平分层全貌
      真正的APP请求第一步是经过DNS的,DNS通过域名获IP,去请求静态接口和动态接口的数据。静态的资源如CSS、图片是放在CDN上的,通过阿里、腾讯、百度的CDN获取静态图片,如果请求的静态资源在CDN上没有命中,CDN会请求Nginx,Nginx会把静态资源返回给CDN,CDN会把静态资源缓存起来再返回给APP,Object Store(对象存储)同理,常用的对象存储是阿里的Fastdfs和Ceph,规模比较小的话建议用Fastdfs,规模比较大的话,建议用Ceph,但是Ceph会给运维团队增加很大的压力,
    在这里插入图片描述

    05 面向服务架构设计与实践

    在这里插入图片描述
      58同城的简化模型图:
    在这里插入图片描述
      为什么SOA不是微服务架构,因为它仅仅做了一个垂直拆分。所以缺点也很明显:

    • 每个服务还是单体架构
    • 对ESB严重依赖

    06 微服务架构设计与实践

      微服务架构即按照水平方向去拆分,又按照垂直方向去拆分

    07 服务网格架构设计与实践

    08 千亿级互联网案例实践

    展开全文
  • 互联网架构(一)总体架构设计

    千次阅读 2020-10-09 15:14:27
    总体架构设计 架构的基本手段就是分与合,先把系统打散,然后再重新组合。 分的过程是把系统拆分为各个子系统/模块/组件。拆的时候首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。 合就是...

    总体架构设计

    架构的基本手段就是分与合,先把系统打散,然后再重新组合。
    分的过程是把系统拆分为各个子系统/模块/组件。拆的时候首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。
    合就是根据最新终要求,把各个分离的组件有机的整合在一起。
    拆分的结构使开发人人员能够做到业务聚焦、技术聚焦、实现开发敏捷,合的结果使系统变得柔软,可以因需而变,实现业务敏捷。

    架构的分类

    架构一般可分为业务架构、应用架构、技术架构

    1. 业务架构:从概念层面帮助开发人员更好的理解系统、比如业务流程、业务模块、输入输出、业务域。
    2. 应用架构:从逻辑层面帮助开发落地系统,如数据交互关系、应用形式、交互方式,使得整个系统逻辑更容易理解,比如大家熟知的SOA就属于应用架构。
    3. 技术架构:主要解决技术平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可用等问题。

    需要注意的是,系统架构首先都是为人服务的,系统的有序度高,应用逻辑合理、业务概念清晰是第一位。现在大家讨论更多的是技术架构,如高并发设计、分布式事务管理等,只是因为这个不需要业务上下文背景,比较好沟通。具体架构设计时,首先要关注业务架构和应用架构。

    大型网站的架构演进

    从一个电商网站开始

    以电商网站为例,一个交易类型的网站,一定要具备用户(用户注册、用户管理)、商品(商品展示、商品管理)、交易(下单、支付)功能。最开始的架构应该时这样的:在这里插入图片描述
    以上是基于Java技术用单机构建的交易网站。这个地方要注意的是各个功能模块之间是通过JVM内部的方法调用进行交互的,而应用和数据库之间是通过jdbc进行访问。

    单机负载警告,数据与应用分离

    随着网站的开放,访问量不断增大,服务器的负载势必会持续升高,此时将数据库和应用从一台机器分到两台机器。在这里插入图片描述
    变化:网站从一台机器变成两台,这个变化对我们影响非常小。单机的情况下,应用采用JDBC的方式和数据库进行连接,现在数据库与应用分离,只需要在配置文件中把数据库的地址从本地改成数据库服务器的ip地址即可。

    为什么这么分
    从计算机的角度来考虑,一个请求的访问到最终的返回,性能瓶颈只会是:CPU、文件IO、网络IO、内存等因素。如果某个资源消耗过多,通常会造成系统的响应速度较慢,所以增加一台机器,使得数据库的IO和CPU资源独占一台机器从而增加性能。

    各个资源消耗的原因

    • CPU: 主要是上下文切换,每个CPU同时只能执行一个线程,而CPU的调度有抢占式和轮询等。CPU在切换的过程中需要存储当前线程的执行状态并恢复要执行的线程状态。IO、锁等待等场景都会触发上下文切换,当上下文切换过多的时候会造成内核占用比较多的CPU。
    • 文件IO: 比如频繁的日志写入,磁盘本身处理速度比较慢,都会造成IO性能问题。
    • 网络IO: 包括内存泄露、内存溢出、内存不足。
      实际不管是应用层的调优,还是硬件的升级,无非就是这几个因素的调整。

    应用服务器复杂告警,如何让服务器走向集群

    应用服务器的压力变大,根据对应用的检测结果,可以针对性能压力大的地方进行优化。可以考虑通过水平扩容及逆行优化,把单机变成集群。在这里插入图片描述
    应用服务器从一台变成两台,这两个应用服务器之间没有直接的交互,他们都依赖数据库堆外提供服务,那么这个时候会抛出两个问题:

    1. 最终用户对两个应用服务器访问的选择?(对于这个问题,可以采用DNS解决,也可以通过负载均设备来解决)
    2. Session问题?

    水平和垂直扩容

    对于大型的分布式架构而言,我们一直追求一种简单、优雅的方式来应对访问量和数据量的增长。这种方式通常指的是不需要改动软件程序,仅通过硬件升级或者增加机器数就可以解决。即分布式架构下的伸缩设计。

    垂直伸缩

    通过升级或增加单台机器的硬件来支撑访问量以及数据量的增长。优点是技术难度低,运营和改动成本低。缺点是机器性能有瓶颈,成本大。

    水平伸缩

    通过增加机器来支撑访问量以及数据量增长的方式,成为水平伸缩,水平伸缩理论上没有瓶颈,但是缺点是技术要求比较高。

    引入负载均衡设备

    在这里插入图片描述
    服务的路由,基于负载均衡设备来实现。

    负载均衡算法

    轮询法

    将请求顺序轮流分配到后台服务器,均衡的对待每一台服务器,而不关系服务器实际的连接数和当前系统的负载。
    缺点:当集群中服务器硬件配置不同、性能差别大时,无法区别对待。

    随机法

    通过系统随机函数,根据后台服务器里列表的大小值随机选取一台进行访问。随着调用量的增大,其实际效果接近与平均分配流量到每一台服务器,也就是轮询法的效果。
    优点:使用简单,不需要额外的配置和算法。
    缺点:随机数的特点是在数据量大到一定程度才能保证均衡,所以如果请求量有限的话,可能会达不到负载均衡的要求。

    源地址哈希法

    根据服务消费者请求客户端IP地址,通过哈希函数计算得到一个哈希值,将这个哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问服务器地址的序号。采用源地址哈希法进行负载均衡,相同的IP客户端,如果服务器列表不变,将映射到同一个后台服务器进行访问。

    加权轮询法

    不同的后台服务器的配置可能和当前系统的负载并不相同,因此他们的抗压能力也不一样。给配置高、负载低的机器分配更高的权重,使其处理更过的请求,而配置低、负载高的机器分配较低的权重,降低其系统负载,经请求按照顺粗且根据权重分配给后端。

    最小连接数法

    前面集中请求方式都是通过请求次数的合理分配最大可能你提高服务器的利用率,但是实际上请求次数的均衡并不能代表负载的均衡。
    最小连接数法根据后端服务器当前的连接情况,动态的选取其中当前积压连接数量最少的一台服务器来处理当前请求,尽可能的提高后台服务器利用率,将负载合理的分流到每一台服务器。

    session问题

    在一些场景中,请求需要带有状态特征,引入了session+cookie机制记录每次请求的会话。
    当会话开始的时候,给当前会话分配一个唯一的会发标识(sessionid),然后通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识告诉web服务器请求属于哪一个会话。在web服务器上,各个会话有独立的存储,保存在不同的会话中。如过遇到禁用cookie的情况,一般的做法就是把这个会发标识放到URL中。

    分布式环境下session的共享
    Session复制

    服务器实现session复制或者共享:在WEB服务器之间增加会话数据同步,通过同步保证了不同web服务器之间Session数据的一致。一般应用容器都支持Session Replication方式。
    存在问题

    1. 同步Session数据造成网络宽带的开销。只要Session数据有变化,就需要将数据同步到所有的其他机器,机器越多,通过带来的数据开销就越大。
    2. 每台web服务器都要保存多有的session数据,如果整个集群的Session数据很多的话,每台机器用于保存Session数据的内容占用会很严重。
      这个方案是靠应用容器完成Session的复制从而解决Session的问题,应用本身不关心这个事情,这个方案不适用集群机器多的场景。
    Session集中存放

    利用成熟的技术做Session复制,比如12306使用的gemfire, 比如常见的内存数据库redis。
    Session数据不保存到本机而是存放在一个集中存储的地方,修改Session也是发生在集中存储的地方。web服务器使用session从集中存储的地方读取。这样保证了不同web服务器读取到的session数据都是一样的。存储Session的具体方式可以是数据库。
    存在问题

    1. 读写Session数据引入网路操作,存在延时和不稳定。
    2. 如果集中存储Session的机器或者集群有问题,会影响到应用。
    Session维护在客户端

    利用cookie存储,但是客户端存在风险,数据不安全,而且存放的数量比较小,将Session维护在客户端还要对Session进行加密。

    数据库压力变大,读写分离

    随着业务的继续增长,数据量和访问量持续增加,对于读多写少的情况,可以考虑读写分离的方式来优化数据压力。在这里插入图片描述
    这个结构的变化会带来两个问题:

    1. 数据如何同步
      我们希望通过读库来分担主库上读的压力,那么首先需要解决的是怎么复制到读库的问题。数据库系统一般提供了数据库复制的功能,我们可以直接使用数据库自身的机制。例如MySQL的Master+slave复制数据。
    2. 应用对数据源如何路由
      对于应用来说。增加一个读库对结构变化产生了一定的影响,也就是我们的应用需要更具不同的情况来选择不同的数据库源。

    搜索引擎其实是一个读库

    搜索引擎可以理解成一个读库。商品存储在数据库中,而网站需要提供用户实时检索的功能,尤其是在商品检索。对于这样的读请求,如果全部走读库,其实性能也会存在一个瓶颈。而使用搜索引擎,不仅能大大提高检索速度,还能减轻读库的压力。搜索引擎最重要的工作是需要根据被所有的数据构建索引,而随着被搜索的数据的变化,索引也需要相应变化。在这里插入图片描述

    加速数据读取的利器-缓存及分布式存储

    在大型网站中,基本上就是在解决存储和计算的问题,所以存储是一个重要的支撑系统。

    分布式文件系统与NoSQL

    对于一些图片,大文本,采用分布式文件系统来实现文件存储:淘宝的TFS、google的GFS,还有开源的HDFS。

    NoSQL可以存储一些非关系型数据。

    数据缓存

    大型网站内部都会使用一些数据缓存,主要用于分担数据库的读的压力,魂村系统一般是用来保存和查询键值对的。应用系统中一般会把热点数据放入缓存,二缓存的填充也应该由应用系统完成。如果数据不存在,则从数据库读取数据后放入缓存。

    页面缓存

    除了数据缓存外,我们还可以对页面做缓存,数据缓存可以加速应用子啊响应请求时的数据读取速度,但是最终展示给用户的还是页面,有些动态产生的页面或者访问量特别高的页面,可以对页面或内容做一些缓存。在这里插入图片描述

    弥补关系型数据库的不足,引入分布式存储

    我们使用的最多的还是关系型数据库,但是在一些场景中关系型数据库不合适,引入分布式存储系统,如:redis、mongoDB、cassandra、HBase等。
    根据不同的场景和数据结构类型,选择合适的分布式存储系统可以极大提高性能。分布式系统通过一个集群提供一个高容量、高并发、数据冗余的支持。

    读写分离后,数据库又遇瓶颈

    通过读写分离以及在某些场景下使用分布式缓存替换关系型数据库的方式,能够降低主库的压力,解决数据存储的问题。但是随着业务的不断发展,我们的主库也遇到平静。

    专库专用,数据垂直拆分

    在这里插入图片描述
    不同业务的数据从原来的一个数据库拆分到了多个数据库中,那么就需要考虑到如何处理原来单机跨业务的事务。

    1. 使用分布式事务。
    2. 去掉事务或者不追求强事务的支持。

    对数据进行垂直拆分后,解决了把所有业务数据放在一个数据库中的压力问题,并且根据不同的业务特点进行更多的优化。

    垂直拆分后,遇到瓶颈,数据水平拆分

    数据的水平拆分就是把同一个表的数据拆分到两个数据库中,产生数据水平拆分的原因是某个业务的数据表的数据量或者更显量达到了单个数据库的瓶颈,这个时候就可以把表拆分到两个或多个数据库中。

    数据库水平拆分与数据垂直拆分的区别是,垂直拆分就把不同的表拆分到不同的数据库,水平拆分是把同一个表拆分到不同的数据库中。

    数据水平拆分与读写分离的区别是:读写分离解决是读压力大的问题。

    水平拆分带来的影响:

    1. sql路由问题,余姚根据一个条件判断当前请求发送到哪一个数据库中。
    2. 主键的处理,不能采用自增ID,需要全局id。
    3. 由于用一个业务的数据被拆分到不同的数据库中,因此需要涉及一些查询需要跨连个数据库获取,如果数据量大并且需要分页,比较难处理。

    应用面临的挑战

    随着业务的发展,用用的功能会越来越多,应用也会越来越大,我们需要考虑如何不让应用变大,这就需要把应用拆分,从一个应用变为多个。

    服务化:把应用分为三层,最上面的web系统,用于完成不同的业务功能;中间的是一些服务中心,不同的服务中心提供不同的业务服务;最下面的是业务的数据库。

    与之前相比有几个重要的变化:

    1. 业务功能的访问不仅仅是单机内部的方法调用,还引入了远程的服务调用。
    2. 共享代码不再是散落在不同的应用中,这个实现被放在各个服务中心。
    3. 数据库的交互放到服务中心,让web应用更加注重与浏览器的交互工作,而不必过多关注业务逻辑的事情。

    什么是分布式架构

    分布式架构的定义

    分布式系统是指位于网络计算机上的组件仅通过传递消息来通信和协调目标系统。其中有两个重要因素:

    1. 组件是分布在网络上的。
    2. 组件之间仅仅通过消息实现通信并协调行动。

    分布式架构的意义

    1. 升级单机提升性能的性价比越来越低。
    2. 单机处理存在瓶颈。
    3. 针对稳定性和可用性的要求。
    展开全文
  • 软件架构设计【二】-系统总体架构设计

    万次阅读 多人点赞 2011-07-07 13:20:21
    系统总体架构非常重要,但在表达上都不尽相同,下面介绍几种常用的系统架构模式,供参考:ASSF(access-service(biz)-standard-fundation)模式:访问-服务(业务功能)-标准-基础,对系统架构各个层次均有表达,但...

       系统总体架构非常重要,但在表达上都不尽相同,下面介绍几种常用的系统架构模式,供参考:

    ASSF(access-service(biz)-standard-fundation)模式:访问-服务(业务功能)-标准-基础,对系统架构各个层次均有表达,但部署应用模式需要有单独说明,如下图方式组织系统总体架构:

     

    Location模式:适合集团级应用,对于应用逻辑表达较为清晰,如下图所示:

     

    3 management-level模式:表达从决策层-管理层-操作层各个层次使用的功能。对于系统功能表达较为清晰,对于与客户达成一致性理解有较好效果,如下图所示:

      

     个人比较推荐ASSF模式做为主架构,同时制定Location模式与3management-level模式附加说明系统,从各个层次表达系统架构。

    展开全文
  • 教育行业(某省交通厅大数据建设),税务行业(某省税务大数据平台应用建设),信息管理(某省人口库建设)等等方面都有很多建树,本文以智慧交通为主题介绍下主流大数据应用的总体架构设计 云服务 首先了解下基于...

    上期简单介绍了大数据,了解了大数据应用的可行性与必然性,事实上也的确如此,大数据在公共管理(某省的最多跑一次),教育行业(某省交通厅大数据建设),税务行业(某省税务大数据平台应用建设),信息管理(某省人口库建设)等等方面都有很多建树,本文以智慧交通为主题介绍下主流大数据应用的总体架构设计

    云服务

    首先了解下基于云计算的三种服务模式,现在的大数据总体架构基本上都是基于此来设计

    云服务架构

     

    • IaaS :基础服务,处在云服务的最底层,是一些基础资源设施,如ECS
    • PaaS:平台服务,用户无需关注底层硬件和操作系统技术,可进行不间断的扩展,如容器应用OpenShift
    • SaaS:软件服务,可把技术,管理等都交给第三方,在平台上做自己的软件业务,可拿来即用,如我们经常碰到的微信,QQ等

    通俗理解拿披萨来说,IaaS是用来烤披萨的烧火炉;PaaS是披萨面饼,你可以在面饼上面放任何你想放的东西来做各种口味披萨;SaaS是包装,用来把披萨按你所需来包装买卖

    总体架构

    大数据应用平台总体架构

     

     

    如图展示了数据从源端接入上云到平台层,再到应用层接入层的整体架构,由于内容过多,这里省略了平台层和应用层之间的数据层架构,下面逐一介绍时会说到这个层次

    源端数据层

    • 结构:这一层严格意义上还属于云下数据,数据分为三种类型结构化数据,半结构化数据和非结构化数据,由于大数据云计算平台只支持数据,不支持图片影音这些非结构化数据,到时候还需要把这些数据进行标准化结构化
    • 类型:按业务来分,数据的类型可分为离线数据(比如财务统计),准实时数据(比如天气情况)和实时数据(比如实时车流量),三种数据类型的如何采集和对应到哪个平台,篇幅有限,下篇推文再讲
    • 其他:此外采集频率,数据标准,数据合成等细节篇幅有限,下篇推文再讲

    平台层

    • 存储平台:数据上云需要根据实际业务把数据上云到对应平台,如分析型数据库,大数据平台,文档数据库,对象存储等
    • 计算平台:这里主要指大数据离线计算平台,算法平台,部分也有流计算和数据库开发计算
    • 应用平台:一些与大数据平台相结合的生态应用平台,如监控管理,Datahub等

    数据层

    数据层基本架构

    数据层由于是多层联合,环环相扣,血缘性很高,叫数据服务平台更为恰当些,这里就是PaaS层,用户可以在这里对标准治理后的数据进行各种加工和分析,然后把输出结果推送到应用层,应用层数据再推送到在线数据库供前端应用调用

    数据层根据业务基本上可分为以下层次

     

    • 原始层:可更细分几个区,分别存放原始数据,标准清洗后的数据,以及其他层次回馈过来的数据,是云上数据最初始的一层
    • 中间层:为了不使数据过度冗余,使平台简洁化,一般数据离线采集都会采用全量+增量=全量的方式,这样只需要第一次上全量,后续按照调度每次上增量即可,故此中间层就可以存放合并后的全量数据供上层调用;此外一些公共数据如代码数据也可以放在这个层
    • 应用层:存放各种加工好的应用数据,基础主体数据等,后续直接通过数据集成工具,把该层的应用数据按业务需求按时推送到在线热数据库供前端应用调用

    应用层

    该层主要是实际业务应用

    由于我对交通行业了解不够深入,只能暂时根据自己的思路和轮岗经验提出下面的几个应用,如有过于幼稚和可笑,请见谅

    高速公路大数据亮点应用

     

    展开全文
  • 智慧环保平台总体架构设计

    千次阅读 2020-03-10 10:55:17
    (1)总体架构 根据建设目标,本项目的整体设计如上图所示。分为六个层次。 生态环境一张网 基础数据一朵云 大数据来搭框架 业务应用开满花 科学决策促改善 数据服务你我他 生态环境监测感知网络:建立覆盖水、气、...
  • 基于Maven的SSM总体架构设计(一)

    千次阅读 2018-10-18 10:01:06
    基于Maven的SSM总体架构设计(一)1 概述1.1 编写目的1.2 读者对象1.3 引用文件1.4 术语表2 相关技术介绍2.1 Spring框架介绍2.1.1 Spring简介2.1.2 Spring框架模块结构2.1.3 Spring相关概念2.2 MyBatis框架介绍2.2.1...
  • 目录商品中心中台支持系统-总体架构设计修订记录目录1、商品中心商品中心中台支持系统-总体架构设计修订记录日期版本章节描述作者2018-10-25V1.0初始版本无涯目录1、商品中心本文讲述电商系统构建中,商品中心中台...
  • 架构师之路二-架构设计方法

    千次阅读 2020-03-19 19:33:37
    本系列文章教你怎么样成为一名架构师,本篇文章目的是让你掌握一套架构方法论,掌握规范的设计方法,设计出更好、更稳定的架构设计
  • 一、架构总原则 1. 大中台+小前台的架构思路 2. 业务中台采用领域驱动设计(DDD),在其上构建业务能力SAAS,持续不断进行迭代演进。 3. 平台化定位,进行了业务隔离设计,方便一套系统支撑不同玩法的业务类型和...
  • Java架构设计总体设计案例

    千次阅读 2018-12-31 09:06:59
    总体架构模块图 1.1 抽象架构模块图       1.2 具体技术架构模块图   如上图示所,框架主要包括了: l MVC开发框架 l 工作流技术 l 用户、权限、角色管理 下面分别详细介绍。 2 MVC方案 ...
  • 一个实际项目Java架构设计总体设计

    万次阅读 多人点赞 2015-06-12 23:10:32
    总体架构模块图 1.1  抽象架构模块图     1.2  具体技术架构模块图 如上图示所,框架主要包括了: l  MVC开发框架 l 工作流技术 l 用户、权限、角色管理 下面分别详细介绍。 2 MVC...
  • 一晃从事软件行业已经有多个年头,而从事服务器相关后端开发,也有了不少的年头,维护过中小型系统,也曾亲身设计过小型系统,但是一直都感觉不太顺意,不是自己想要的那种服务体系,很多时候都是在重复造轮子,于是...
  • 对ADMEMS架构设计方法论的一点随笔

    千次阅读 2015-07-22 17:34:15
    今天翻出了温昱老师的《一线架构师实践指南》老书,Review了一下,虽然书是2009年发行的,而且其思想也是作者09年以前的经历和总结,升华到方法论,但时到今日,其架构思想依然是可圈可点的。随笔记下阅后几点,以作...
  • 架构设计

    千次阅读 2014-06-05 16:52:21
    1.每个人都是架构师 2.对架构设计的理解 3.架构设计解决的问题 4.架构设计五视图 5.如何后期使用架构设计
  • IMS总体架构

    万次阅读 2014-06-27 12:49:05
    IMS总体架构   如上图所示,IMS总体架构通常分为三层,接入层、呼叫控制层、业务应用层: 接入层:接入层将各种接入网络汇总到IMS核心网中,完成对现有网络的互通及完成对承载的控制。 ...
  • 代码分层、分离,封装。...优秀开源项目的代码风格和设计理念。 Android使用Linux内核是1991年开发的;Mac OS X、iOS和苹果的其他平台是基于Unix系统的,那是AT&T贝尔实验室在1969年启动的一个项目。Windows计...
  • ADMEMS 软件设计架构方法

    千次阅读 2010-08-25 14:22:00
    ADMEMS 好像是一个不错的架构设计方法,这里先贴上宣传页面,改天有时间的时候做研究   方法体系作为方法体系,ADMEMS方法通过3个阶段和1个贯穿环节,来覆盖“需求进,架构出”的架构设计完整工作...
  • Python总体架构

    千次阅读 2018-07-14 19:16:22
    Python的整体架构可以分为三个主要的部分: 1.Python提供的大量的模块、库以及用户自定义的模块。 2.Python的运行时环境,包括对象/类型系统(Object/Type structures)、内存分配器(Memory Allocator)和运行时...
  • 架构设计方法

    万次阅读 2011-11-22 17:40:37
    约公元前25年,古罗马建筑师维特鲁威说:“理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷...”(好难哪,软件构架设计师的要求呢?大家好好想想吧。)  本文目录  一、与构架有关的几个基本概念;
  • 软件架构设计-五视图方法

    千次阅读 2014-07-14 16:45:46
    1)物理架构  物理架构的目的是确定物理节点和物理节点的拓扑结构;其中物理节点包括服务器、PC机、专用机、软件安装部署烧写以及系统软件的选型;拓扑结构明确物理节点的关系。 2)运行架构  运行架构的目的...
  • 软件架构设计 ADMEMS方法体系

    千次阅读 2013-03-29 10:11:43
    一是虽然这次算是有史以来时间最长的专题培训,但要讲清楚软件架构设计方法体系这么大一个主题,受时间所限对一些概念名词的交待老师只能口头一带而过,这些词可能在老师创建的ADMEMS方法里是有清楚定义的,或者是在...
  • 本文旨在探讨解决方案架构设计过程的方法,原则与逻辑思想以及根据经验提炼出的一套解决方案架构的... 跨领域发展的解决方案架构设计方法与模型 从模糊的商业问题或抽象的业务愿景落到解决方案的方式 如...
  • 微服务架构设计实践 目 次1 序言2 微服务3 软件架构设计思想4 微服务架构设计实践4.1 项目概述4.2 架构准备阶段4.3 概念架构阶段4.4 细化架构阶段4.4.1 业务架构4.4.2 数据架构4.4.3 应用架构4.4.4 技术架构4.4.5 ...
  • 软件架构设计之七:软件架构设计

    千次阅读 2013-08-27 20:28:13
    一、本章要点 ...2)系统架构设计案例分析。包括软件架构技术、XML技术、基于架构的软件开发过程、架构模型(风格)、特定领域软件架构、基于架构的软件开发方法、架构评估、软件产品线、系统演化、设计
  • 敏捷思维- 架构设计中的方法

    千次阅读 2011-07-18 14:31:20
    敏捷思维-架构设计中的方法学 目录1.从方法论看架构设计... 22.架构设计的敏捷视图... 73.源自需求... 134.团队设计... 185.简单设计... 246.迭代设计... 297.组合使用模式... 368.架构愿景... 419.分层 ...
  • 我对架构设计的理解

    千次阅读 2019-02-09 13:53:52
    游戏架构设计是一个老生长谈的话题,以前给多个游戏公司培训过,随着时间的积累,对游戏架构设计的理解又多了一些,在此给读者...我先把我们的设计思想介绍一下,我们的架构设计总体来说是基于组件的模块化设计,举...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,437
精华内容 42,574
关键字:

总体架构设计方法