- 博客(17)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
转载 系统架构系列(二):系统架构的目的、难点和方法
引言在本系列的第一篇文章中已经给出系统架构的公式定义:系统架构 = 要素 + 连接 + 解决特定的问题,本篇文章重点讨论应对系统架构的方法。如今,系统架构在业内还没有定型的固定方法,一般会讲:需求分析、系统分析与设计、UML、领域建模、设计模式、软件工程等,笔者不打算这样讲,这样下来会有厚厚一本书,希望从简洁、可落地实践的角度去阐述系统架构,后面的文章再给出每种架构具体可实践操作的方法。一、系统架构的本质目的我们已经知道系统架构是什么,有必要讲一下系统架构的目的,即为什么要进行系统架构。对于
2015-09-28 20:59:30 4390
原创 tomcat9.0源码分析之UpgradeProcessorInternal
UpgradeProcessorInternal的继承关系UpgradeProcessorBase#isUpgrade()方法总是返回true @Override public final boolean isUpgrade() { return true; }UpgradeProcessorInternal处理NioSocketWrapper...
2015-09-28 20:55:14 2583 1
转载 Spark任务提交后,一直处于Accept状态,无法正常运行
问题背景与现象Spark任务提交后,任务一直处于Accept状态,无法正常运行。Driver端提示executor memory超限。原因分析FusionInsight集群中,Spark任务运行在Yarn的资源管理框架下,由Yarn来负责资源的调度管理,Yarn在接收Spark任务后,任务会先处于Accept状态,待为该任务分配到资源之后,人后然后才会进入Running状态执行如果Yarn上没有足够资源,则任务将一直处于Accept状态。可通过如下方式查看Yarn上资源。查看当前yarn是否
2015-09-28 19:34:07 9162
转载 四色建模法进行领域建模(风控系统为例)-通过时标、参与方、角色、描述进行领域模型抽象
数据架构重要的输出是数据 - 实体关系图,简称 ER 图。ER 图中包含了实体(数据对象)、关系和属性 3 种基本成分。ER 图可以用来建立数据模型。如何准确的建立产品的数据模型,需要分解出业务需要什么样的数据。数据域的分解过程是站在业务架构的基础上,对业务域进行模型分析的过程。说起业务建模,大家很快会想到领域模型这个概念。这里的思路是通过领域建模来逐步提取系统的数据架构图。说到领域模型,这里采用四色原型法进行业务模型的抽象。在进行四色模型分析前,我们先了解下四色模型的一些基本概念。四色模型,顾名思
2015-09-28 19:12:16 4981 1
转载 AutoLoadCache – 再谈缓存的穿透、数据一致性和最终一致性问题
缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。本文主要是讨论我们经常使用的分布式缓存 Redis 在开发过程中的相关思考。1. 如何将业务逻辑与缓存之间进行解耦?大部分情况,大家都是把缓存操作和业务逻辑之间的代码交织在一起的,比如(代码一):从上面的代码可以看出以下几个问题:缓存操作非常繁琐,产生非常多的重复代码; 缓存操作与业务逻辑耦合度非常高,不利于后期的维护; 当业务数据为 null 时,无法确定是否已经缓存,会造成缓存无法命中; 开发阶段,为了排查问题,经常需
2015-09-24 00:34:53 11989
转载 系统架构系列(一):系统架构概念、分类和特性
一、推导系统架构的公式1.1 系统架构概念拆分在学习一门技术的时候,一定要知道是什么、为什么、怎么做。系统架构这个概念本身就非常大,而且有各种各样的定义,初学者会遇到这样的困境:到底什么是系统架构?不管什么样的定义,笔者相信知识只有内化成为自己的才最重要,否则我们只是不断地输入而没有消化。先不看之前的定义是什么,从 " 系统架构 " 这四个字开始推导其公式。" 系统架构 " 可以拆分成两部分:“系统 " 和 " 架构”。“系统 " 在百科中的定义是" 系统就是若干相互联系、相互作用、相互依赖的要
2015-09-23 11:21:12 2619
转载 领域驱动设计(以美团的抽奖系统为例)——领域划分、限界上下文划分和上下文映射
至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到传统行业软件开发中所面临的问题。本文就先来讲一下这些问题,然后再尝试在实践中用DDD的思想来解决这些问题。过度耦合业务初期,我们的功能大都非常简单,普
2015-09-22 00:44:15 1507
转载 1亿数据帖子中心的分库分表架构设计
帖子中心,是互联网业务中,一类典型的“1对多”业务,即:一个用户能发布多个帖子,一个帖子只有一个发布者。随着数据量的逐步增大,并发量的逐步增大,帖子中心这种“1对多”业务,架构应该如何设计,有哪些因素需要考虑,是本文将要系统性讨论的问题。什么是x对x?所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。什么是“1对1”业务?用户中心,一个用户只有一个登录名,一个登录名只对应一个用户,这是典型的1对1业务。什么是“1对多”业务
2015-09-22 00:31:14 524
转载 业务架构与产品架构设计实践
系统架构的分解,先从业务域进行分解。狭义的业务域具有商业的概念,从这个概念来看,有的系统没有业务域,当如果宽泛一点来看,业务域就是问题域,问题域总是存在的。业务域的分解,首先是从系统需求入手,在需求初期可能你就得到的只是一句比较模糊的需求描述,这些需求可能来自于老板、运营或者用户(比如下图的场景)。直接把这句话作为核心产品功能是不恰当的,合理的做法是先把这个产品的所有问题域列清楚。列出问题域问题域,是指自己的产品能够解决的所有问题的空间集合。从核心需求出发,将所有当前需要解决、未来可能需要解
2015-09-22 00:21:47 2328
转载 1亿数据订单中心的分库分表架构设计
订单中心,是互联网业务中,一个典型的“多key”业务,即:用户ID,商家ID,订单ID等多个key上都有业务查询需求。随着数据量的逐步增大,并发量的逐步增大,订单中心这种“多key”业务,架构应该如何设计,有哪些因素需要考虑,是本文将要系统性讨论的问题。什么是“多key”类业务?所谓的“多key”,是指一条元数据中,有多个属性上存在前台在线查询需求。订单中心是什么业务,有什么典型业务需求?订单中心是一个非常常见的“多key”业务,主要提供订单的查询与修改的服务,其核心元数据为:Or.
2015-09-21 23:47:43 559
转载 领域建模分析方法
领域模型之间的联系,我们要怎么理解呢?以上面这位某人A为例,本次我们所要提取的特征,是父亲。父亲与母亲,丈夫与配偶,关系是1对1的。也就是一夫一妻制。父亲与孩子,关系是1对N的,一位父亲,可以有一个孩子,也可以有多个孩子。母亲与孩子的关系,也是1对N的。所以这一家三口之间的联系,可以简单用这张图来表示:当然领域模型的图形化还有很多种方式,例如UML类图、状态图、时序图等,这边就不一一介绍。1.2 为什么要学习领域模型“基础设施决定上层建筑” —— 马克思。老祖宗教导我..
2015-09-21 22:53:51 1745
转载 交易系统的领域驱动设计
背景交易系统作为电商平台架构的核心系统之一,它为解决什么问题呢?我认为它应最大化满足买卖双方的价值交换,在交易前、后提供完备的服务。交易前:客户购买下单,支付金额,电商网站确认支付后,进行配送发货。交易后:在退换周期内,客户申请退换,电商进行退换处理,并返还客户金额;同时对交易金额进行结算。完整交易需要图中多个核心流程来支撑,其本身的业务链条比较长;它会引入订单、支付单、配送单、售后服务单等多个领域概念;产生营销活动抵扣、支付方式、退换货策略等不同的业务规则;使系统具有较高的复杂性。对于交
2015-09-21 22:20:49 1015
转载 1亿数据用户中心的分库分表架构设计
这里是以下面的symbol和label的形式出现。label是可以修改的,即是用户自定义用于方便阅读的由于是用class的属性值进行符号的分类,所以这里的value值,是class的属性值之一
2015-09-20 20:50:17 1118
转载 领域驱动设计和实践
领域驱动设计不是把业务逻辑放在 BS(BusinessService)中,而是由具备属性、行为和状态的领域对象处理。例如 Order 类,如果是贫血的 POJO,那它内部只有与数据表字段对应的属性以及 getter 和 setter 方法,而在领域驱动设计中,则是一个相对独立的、能够处理自身关联业务的领域对象
2015-09-19 16:37:09 1858
转载 什么是产品化
当我们在谈产品化时,我们想的是同一个概念吗?为了更好地理解这个问题,首先要解释“系统、产品、商品”的定义。我不太想用百科上的通用定义,如:商品是用于交换的劳动产品,这对我们今天的话题没有指导意义,我尝试用更贴近我们日常工作上下文的方式来给出定义。 系统的定义:各种离散功能组成的功能集合体。 产品的定义:有使用价值且封装良好的可复用功能集合体。 商品的定义:以交易为目的的,有使用价值且封装良好的可复用功能集合体。 举个例子:我用各种零件制作了一个计时系统,具有..
2015-09-17 23:39:51 5766
原创 hdfs3.2源码分析之DFSOutputStream
DFSOutputStream概述DFSOutputStream从字节流中创建文件。client端写入的数据首先由这个这个流缓存。data数据首先分割成packets,每个packet都是64k的大小。每个packet由chunk组成,每个chunk都是512的字节大小,并且都附带一个checksum。当client端填充完currentPacket后,会把它放入DataStrea...
2015-09-16 23:42:46 1312
转载 Elasticsearch调优实践
背景Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力。因此在全文检索、日志分析、监控系统、数据分析等领域ES均有广泛应用。而完整的Elastic Stack体系(Elasticsearch、Logstash、Kibana、Beats),更是提供了数据采集、清洗、存储、可视化的整套解决方案。本文基于ES 5.6.4,从...
2015-09-01 16:05:44 914
viewpager实现页面导航之三
2015-07-22
viewpager与预编译的点布局实现页面导航效果
2015-07-20
导入第三方类库却出现the importXXX can not be resolved
2015-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人