架构设计
网站架构设计经验总结
科技D人生
专注于金融科技领域的技术人
-
转载 软件架构五大原则
方案架构师是负责系统架构以及特定产品的技术标准(包括技术、平台、基础架构)的专家。他们为产品设定前景,他们的分析也是产品的定义、设计、交付和永久支持的成功关键。因此,构架师不仅需要了解业务需求,还需要了解符合企业技术总目标的逻辑性、可扩展性及成本效益。架构师的重要技能之一就是能从许多不同的角度来看待架构,因为每一个单独的角度可能不完全相关,但结合在一起就可以从总体的角度来看待产品。这些角度包括原则、标准、模式和反模式、经验法则和经验实践,而这些对于决策方向确定和项目评估成功至关重要。本文将一一介绍这些架构原2020-08-04 09:20:09262
0
-
转载 对领域驱动设计的理解与实践
前言领域驱动设计(Domain-Driven-Design)是一种针对大型复杂系统的领域建模与分析方法论。2003 年,Eric Evans 发布《Domain-Driven Design: Tackling Complexity in the Heart of Software》(领域驱动设计:软件核心复杂性应对之道),其中定义了DDD。DDD改变了传统软件开发针对数据库进行的建模方法;DDD先对业务领域进行分析,建立领域模型,根据领域模型驱动代码设计。合理运用面向对象的高内聚低耦合设计要素,降低整个2020-07-21 20:59:49542
5
-
转载 分布式架构中数据一致性常见的几个问题
前言针对分布式架构下的数据一致性,大家也许会问这样的问题:跨系统间分布式事务如何解决?系统内多个服务的分布式事务如何解决?一个服务内多个数据源/数据库的分布式事务如何解决?……这些问题大家是很容易理解的,但是由于术语不准确,所以解释起来会有二义性,所以先要统一语言或者术语,也就是统一概念:域是一个虚拟的分类,几个系统属于某一个域,例如网上银行和手机银行都属于电子渠道领域;传统的单体应用...2020-05-02 10:14:24459
0
-
转载 九种分布式ID生成方式
一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一...2020-02-24 13:18:00882
0
-
原创 架构师职位常见面试题
一、架构师的日常职责是什么?总体而言,架构师负责软件领域的顶层设计。 架构师需要根据公司的发展,规划企业未来若干年的架构,制定可落地的架构方案,解决技术难题,做技术选型与攻关,落地具体的架构。优秀的架构师既能做架构方案,也能写具体的架构代码。二、开发工程师和架构师有何区别?工作重点不同:架构师重点在于前期的架构规划,需要制定可落地的架构方案,结合公司的业务场景、团队的技术水平等因素...2019-06-06 11:04:299112
14
-
转载 高并发下接口幂等性解决方案
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setT...2019-03-11 18:53:17408
0
-
转载 理解分布式系统中的缓存架构(下)
本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。1 分层缓存架构设计2 缓存带来的复杂度问题常见的问题主要包括数据一致性 缓存穿透 缓存雪崩 缓存高可用 缓存热点 下面逐一介绍分析这些问题以及相应的解决方案。数据一致性因为缓存属于持久化数据的一个副本,因此不可避免的会出现数据不一致问题。导致脏读或读不到数据的情况。数据不一致,一般是因为网络不稳定或节点故...2018-11-29 18:32:45582
0
-
转载 理解分布式系统中的缓存架构(上)
本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。1 缓存概述缓存概述2 缓存的分类缓存主要分为以下四类 缓存的分类2.1 CDN缓存基本介绍CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载...2018-11-29 18:29:26506
0
-
原创 分布式系统中的幂等设计
前言现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景。幂等性:就是用户对于...2018-11-22 15:15:09763
0
-
转载 分布式系统中处理参数配置的 4 种方案
前言一个系统中包含有各种各样的配置信息,如一个日志文件需要配置以下几个信息。 日志文件生成主目录 日志文件名称,不同的日志级别对应不同的文件 当前日志级别 还有其他各种业务参数、系统参数等,大多单一系统是直接把这些配置写死在配置文件中,当部署到测试、生产环境就再修改下配置文件,这样很容易出错,也不能灵活修改。还有就是系统变成分布式系统后,子系统越来越多,你要维护这...2018-10-23 12:55:26956
0
-
转载 秒杀系统架构优化思路
一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。 例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,票是有限的,库存一份,瞬时流量非常多,都读...2018-06-12 14:48:125667
3
-
转载 高并发分布式系统中生成全局唯一Id汇总
全局唯一ID《高并发分布式系统中生成全局唯一Id汇总》Twitter 方案(Snowflake 算法):41位时间戳+10位机器标识(比如IP,服务器名称等)+12位序列号(本地计数器)Flicker 方案:MySQL自增ID + "REPLACE INTO XXX:SELECT LAST_INSERT_ID();"UUID:缺点,无序,字符串过长,占用空间,影响检索性能。MongoDB 方案:利...2018-05-30 10:39:295966
0
-
转载 阿里电商架构演变之路(二)
前言随着问题的暴露,阿里技术官们还能勉强处理,但是双十一人流量的暴增,对于应用的要求也是越来越高,阿里一直在酝酿这一场技术革命。1 应用拆分1.1 系统专业化分工千岛湖项目,交易中心(TC),类目属性中心(Forest)五彩石项目,店铺中心(SC),商品中心(IC),评价中心(RC)新组织结构支持1.1 服务中心团队用户中心(UIC),第一个业务中心于2008年上线中间件团队垂直产品团队2 分布式2017-12-14 10:23:32866
0
-
转载 阿里电商架构演变之路(一)
前言阿里应该是Java大户,之前对于阿里的技术并不是很熟悉,后来接触的多了,才觉得阿里电商领域做得有多大,背后的技术支撑也是令人眼花缭乱,既然做互联网之路,那么阿里的电商技术模式就是绕不开的,面苏宁时,面试官也说,阿里现在走的路是我们以后的必经之路,不得不说,阿里在这条技术之路走得有多远。1.1. 阿里业务全貌1.2 阿里技术大图1.3 中间件技术大图2.1 技术架构演进史• 1.0 → 2.0时2017-12-14 10:11:43976
0
-
转载 Web应用的负载均衡、集群、高可用(HA)解决方案整理总结
一、涉及到的几个组件1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(SSL)等等,目前互联网主要使用它做静态资源服务器,也可以做代理服务器转发请求(如:图片链等),结合tomcat等servlet容器处理jsp。1.2、ngnix —— 俄罗2017-10-16 11:19:0333624
8
-
原创 软件架构设计的六大原则
1. 单一职责原则(Single Responsibility Principle - SRP)原文:There should never be more than one reason for a class to change.译文:永远不应该有多于一个原因来改变某个类。理解:对于一个类而言,应该仅有一个引起它变化的原因。说白了就是,不同的类具备不同的职责,各施其责。这就好比一2017-07-26 09:50:2816359
2
-
转载 互联网项目特点及高可用架构方案设计
互联网项目特点前后在两家不同的企业工作过,对于互联网与传统企业在业务发展、项目开发以及技术管理上的不同略有一番认识,与大家分享:用户体量上的不同一般来说,在传统行业项目的用户量是可预期的,增长速度也是可预期的。然而对于一个互联网项目来说,用户量很难做一个准确的预估,项目初期,用户量可能只有几千人,如果业务进行顺利,可能会在几个月的时间,用户量超过千万。2017-06-09 09:52:123496
0
-
转载 软件架构模式
分层架构 (Layered Architecture)分层架构是最常见的架构,也被称为n层架构。多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师、开发者和软件设计者所熟知。比如MVC。分层架构的一个特性就是 关注分离(separation of concerns) 。在层中的组件只负责本层的逻辑。组件的划分很容易让它们实现自己的角色和职责,也2017-06-05 17:34:042197
0
-
转载 Dubbo学习总结(5)——Dubbo服务架构及服务治理过程演进
单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构 当垂直应用越来越多,2017-05-24 11:28:182827
0
-
转载 服务架构演进过程
单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构 当垂直应用越来越多,2017-05-24 11:24:491112
0
-
转载 互联网产品之百万级高并发技术整体架构
高并发是由于移动APP或网站PV(page view)即页面浏览量或点击量大,单台服务器无法承载大量访问所带来的压力,因此会采用服务器集群技术,用N台服务器进行分流,对于每次访问采取负载均衡策略,被分配到不同的服务器来处理请求。负载均衡种类一种是通过硬件来实现,常见硬件有F5,NetScaler、Radware和Array等商用的负载均衡器,但是它们是比较昂贵,成本比较高。另一2017-05-05 11:33:2212356
0
-
转载 互联网高并发架构的8种设计模式演化
1、单库单应用模式这种是最简单的模式,即一个数据一个应用服务器,一般在产品发布初期使用会比较方便,单日30万到50万PV以下一般没有问题。2、内容分发模式在主机中使用了静态文件缓存之后,还可以使用CDN的方式把静态文件分发到离用户最近的节点上以达到快速响应的目的,一般在百万级别的PV时需要使用。3、查询分离模式主要是指数据库的读写分离,能够降低响应延时,2017-04-14 09:42:173479
0
-
转载 大项目微服务架构设计
根据目前产品存在的问题,针对快速开发、海量用户、大量数据、低延迟等互联网应用的实际需要,通过对业务架构、系统架构、基础架构、技术架构进行分析,采用先进实用的微服务SOA架构重构智慧校园、数字化校园等产品,彻底解决系统解耦、性能低下等问题,而且支持云计算部署,可以满足高并发、高可用、高稳定和高安全等性能要求,提供强大的saas和互联网访问服务。由于采用微服务架构,各个服务模块化编写,具有高内聚低耦合2017-03-03 09:29:191973
0
-
翻译 可扩展Web架构与分布式系统
开放源代码已经成为一些大型网站的基本原则。而在这些网站成长的过程中,一些优秀的实践经验和规则也出现在他们的结构中。本文旨在介绍一些在大型网站结构设计的过程中需要注意的关键问题以及实现目标的基础工作。本文侧重于介绍网络系统,尽管一些准则在其他分布式系统中也是适用的。1.1. web分布式系统的设计原则搭建和运营一个可伸缩的web站点或者应用程序意味着什么?在原始层面上这仅仅是2016-12-21 15:26:521337
0
-
原创 Dubbo学习总结(2)——Dubbo架构详解
一、前言部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下。整理这篇文章差不多花了两天半时间,请尊重劳动成果,如转载请注明出处http://blog.csdn.net/hzzhoushaoyu/article/details/43273099二、什么是dubb2015-10-10 16:11:328162
2
-
转载 标准Web系统的架构分层
1、架构体系分层图在上图中我们描述了Web系统架构中的组成部分。并且给出了每一层常用的技术组件/服务实现。需要注意以下几点:系统架构是灵活的,根据需求的不同,不一定每一层的技术都需要使用。例如:一些简单的CRM系统可能在产品初期并不需要K-V作为缓存;一些系统访问量不大,并且可能只有一台业务服务器存在,所以不需要运用负载均衡层。业务系统间通信层并没有加入2015-12-21 18:16:382323
0
-
转载 架构师不可不知的十大可扩展架构
可扩展性正是如今软件设计领域最值得优先考虑的要素。然而,计算机科学家们还无法了解一套单独的架构如何才能扩展至各类应用环境当中。相反,我们在数量繁多的方案中所设计出的可扩展性架构,往往以业界较为通用的已知可扩展模式及个人偏好为标准。本文列出了十大大家耳熟能详的可扩展性架构,以供借鉴。AD: 2013云计算架构师峰会课程资料下载【51CTO精选译文】对于大多数架2015-12-22 13:14:492981
0
-
转载 一步步构建大型网站架构
之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密、Flickr架构、YouTube网站架构、PlentyOfFish 网站架构学习、WikiPedia技术架构学习笔记。这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能是狭隘的。今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有2015-12-22 15:39:241422
0
-
转载 QQ空间技术架构之深刻揭密
QQ空间作为腾讯海量互联网服务产品,经过近七年的发展,实现了从十万级到亿级同时在线的飞跃。在这个过程中,QQ空间团队遇到了哪些技术挑战?其站点前后台架构随着业务规模的变化又进行了怎样的演进与变迁?成长背后有过怎样的心酸和快乐……4.26日晚间,腾讯大讲堂·深圳首站《QQ空间技术架构之峥嵘岁月》活动在腾讯总部腾讯大厦多功能厅举办,腾讯Web前端研发领域专家、腾讯最早的专职Web开发团队核心成2015-12-22 15:43:511747
0
-
转载 大数据架构hadoop
摘要:Admaster数据挖掘总监 随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求。随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.82015-12-22 15:44:591688
0
-
转载 软件架构学习小结
软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。一、软件架构师的职责架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(J2EE架构师、.NET架构师等)、系统架构师。2015-12-22 15:46:222202
0
-
转载 应用系统架构设计
我们在做着表面上看似是对于各种不同应用的开发,其实背后所对应的架构设计都是相对稳定的。在一个好的架构下编程,不仅对于开发人员是一件赏心悦目的事情,更重要的是软件能够表现出一个健康的姿态;而架构设计的不合理,不仅让开发人员受苦受难,软件本身的生命周期更是受到严重威胁。这里我将针对在微软dotNet平台上做应用开发系统的一般架构流程设计做一个粗浅的讨论。总体设计图表示层2015-12-22 15:47:111564
0
-
转载 大型网站技术架构(一)大型网站架构演化
看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存,因此书本看起来还是挺通俗易懂的,而且作者李智慧给人的印象(书本)也挺深刻的,我从这本书中也学到了许多,了解的许多,但是理解还是比较抽象的,写出来才是真正的理解,因此准备写一系列的博客来介绍和加深理解大型网站技术架构。2015-12-25 16:06:241893
0
-
转载 大型网站技术架构(二)架构模式
每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠运行灯一系列问题与挑战。为此,在实践中提出了许多解决方案,以实现网站高性能、高可靠性、易伸缩、可扩展、安全等各种技术架构目标。1、分层 分词是企业应用系统2015-12-25 16:16:411506
0
-
转载 大型网站技术架构(三)架构核心要素
所谓架构,一种通俗的说法就是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终的蓝图。 而软件架构即“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计”。一般来说软件架构需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。1、性能 性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能带2015-12-25 16:18:101546
0
-
转载 大型网站技术架构(四)网站的高性能架构
网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。1、性能测试指标1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间。如下列出了系统常用的操作响应时间表.操作响应时间打开一个网站几秒数据库2015-12-25 16:20:321517
0
-
转载 大型网站技术架构(五)网站高可用架构
网站的可用性(Avaliability)描述网站可有效访问的特性。1、网站可用性的度量与考核 网站不可用时间(故障时间)=故障修复时间点-故障发现(报告)时间点 网站年度不可用时间=(1-网站不可用时间/年度时间)× 100% 可用性指标时网站架构设计的重要指标,对外是服务承诺,对内是考核指标,具体到每个工程师,更多的是使用故障分。2015-12-25 16:21:551541
0
-
转载 大型网站技术架构(六)网站的伸缩性架构
网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。1、网站架构的伸缩性设计网站的伸缩性设计可以分成两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的 功能;后者是集群内的多台服务器部署相同的服务,提供相关的功2015-12-25 16:23:021715
0
-
转载 大型网站技术架构(七)网站的可扩展性架构
扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系。 模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务。1、利用分布式消息队列降低系统耦合2015-12-25 16:24:071656
0
-
转载 大型网站技术架构(八)网站的安全架构
从互联网诞生起,安全威胁就一直伴随着网站的发展,各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。1、XSS攻击 XSS攻击即跨站点脚本攻击(Cross Site Script),指黑客通过篡改网页,注入恶意HTML脚本,在用户访问网页时,控制用户浏览器进行恶意操作的一种攻击方式。常见的XSS攻击类型有两种,一种是反射型2015-12-25 16:24:581414
0