- 博客(29)
- 收藏
- 关注
转载 微服务服务划分示例
近年来微服务/SOA很是流行,我们团队赶时髦,也玩了玩。虽然用的时间还不长,但也已经踩过不少坑。今天想记录下自己对边界问题的一些思考。很多人在谈起微服务时,总是会很自豪的说,微服务为我们提供了高内聚低耦合的明显好处,因为微服务强化了模块化的概念。但是, 如何模块化,如何明确的定义模块的边界,却很少有人提及,而这正是微服务架构的难点,也恰恰是开发人员技术能力的体现。如何正确的定义模块的边界,似乎...
2020-04-02 14:00:20
845
转载 微服务划分原则
如何判断服务是否太小,或许没有正确定义在微服务系统的测试和实施阶段,需要牢记下面两条出现现象。第一个现象是服务之间的任何过度依赖。如果两个服务不断地互相调用,那么这已经是一个强烈的耦合信号,他们如果并成一个服务可能更好。第二个现象:建立服务的开销超过了让其独立的好处。在这种情况下不如合并成一个服务。...
2020-04-02 10:03:09
769
转载 浅谈微服务体系中的分层设计和领域划分
1.摘要本文阐述了一种将分层设计和DDD领域设计应用于微服务体系架构的方案实践,也是个人的最佳实践。对于互联网公司来说,我们主张将其Web服务架构分为五层:基础设施层、领域服务层、应用服务层、网关层和用户界面层(表示层)。领域服务层和应用服务层均可以采用微服务设计进行拆分,其中领域服务层将按照DDD领域建模进行领域划分,设计为一个个领域模块微服务,每个微服务高度内聚,仅关注自己的业务,领域服务间...
2020-04-02 09:22:14
536
转载 分层设计的开发步骤是怎样的
假设我们以一个标准的SaaS项目为主,也就是表示层是前端页面(可以是APP,H5,M站,小程序,PC站等),那么高效的一种开发步骤可以是这样的:1.业务、产品、开发PM进行需求评审(可行性等)2.产品准备好原型3.产品、开发(前后端)、架构师(或有架构师能力的资深开发)开会过PRD,了解要做什么4.架构师开始设计领域(资深架构师一下午就能搞定),前端开始切图,应用层开发开始按照UI和P...
2020-04-02 09:13:05
733
转载 java中三种常见内存溢出错误的处理方法
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)
2017-06-30 07:35:09
255
转载 深入理解分布式事务
本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!我在上一期介绍了spring的事务原理(详情见《深入理解spring事务原理》),Spring事务本质是单机下的事务,是由数据库本身保证的。今天,我将介绍一种比较复杂的事务:分布式事务。1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的
2017-06-27 08:33:26
509
转载 MySQL索引类型总结和使用技巧以及注意事项
索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:复制代码代码如下:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NUL
2017-06-26 11:51:19
219
转载 Storm概念、原理详解及其应用(一)BaseStorm
本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出。写这篇文章,是想把一些官文和资料中基础、重点拿出来,能总结出便于大家理解的话语。与大多数“wordcount”代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:“知其然,并知其所以然”。Storm是什么?为什么要用Storm?为什么不用Spark?
2017-06-26 11:02:42
467
转载 MySQL中B+Tree索引原理
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树
2017-06-25 20:08:23
285
转载 MyISAM和InnoDB的区别
MyISAM和InnoDB的区别MySQL默认采用的是MyISAM。MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 M
2017-06-25 19:53:12
214
转载 全面剖析Redis Cluster原理和应用
全面剖析Redis Cluster原理和应用1.Redis Cluster总览1.1 设计原则和初衷在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个:性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等
2017-06-23 23:12:59
410
转载 redis集群原理
redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。 官方的一个简单测试: 测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 结果:读的速度是110000次/s,写的速度是81000次/s 在这么快的读写速度下,对于一般程序来说足够用了,
2017-06-23 16:56:22
252
转载 基于redis分布式缓存实现(新浪微博案例)
基于redis分布式缓存实现(新浪微博案例)第一:Redis 是什么?Redis是基于内存、可持久化的日志型、Key-Value数据库 高性能存储系统,并提供多种语言的API.第二:出现背景数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(
2017-06-22 23:27:31
340
转载 国内外三个不同领域巨头分享的Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽。这里我们将为大家分享社交巨头新浪微博、传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们看新浪微博 @启盼cobain的Redis实战经验分享:新浪微博:史上最大的Redis集群Tape is Dead,Disk is Tape,Flash is Disk,RAM Local
2017-06-22 20:07:49
622
转载 Redis各类型应用场景
Redis的六种特性l Stringsl Hashsl Listsl Setsl Sorted Setsl Pub/SubRedis各特性的应用场景StringsStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。常用方法方法说明
2017-06-22 19:38:31
299
转载 Redis原理详解
数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对
2017-06-22 17:53:48
314
转载 JVM原理讲解和调优
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而
2017-06-18 17:39:55
271
转载 Minor GC和Full GC区别
概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。 老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集
2017-06-18 15:51:54
354
转载 jvm中的新生代Eden和survivor区
聊聊JVM的年轻代1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的
2017-06-18 15:38:09
271
转载 设计模式--缺省适配器模式
Structural 模式 如何设计物件之间的静态结构,如何完成物件之间的继承、实 现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂、易维护、易修改、耦合度低等等议题。Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构。Default Adapter 模式Adapter 模式Bridge 模式Composite 模式Decora
2017-06-18 12:13:00
378
转载 对面向对象设计的理解—Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗?为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类
2017-06-18 11:48:08
414
转载 Java设计模式之《适配器模式》及应用场景
适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 适配器模式有两种:类适配器、对象适配器、接口适配器 前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。1、类适配器模式: 原理:通过继承来实现适配器功能。 当我们要访问的接口A中没有我们想要的方法 ,却在
2017-06-12 12:02:31
475
转载 JAVA设计模式初探之适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 下面是两个非常形象的例子 3. 模式中的角色 3.1 目标接口
2017-06-12 10:57:55
285
转载 Java使用设计模式中的代理模式构建项目的实例展示
这篇文章主要介绍了Java使用设计模式中的代理模式构建项目的实例展示,代理模式中的代理对象可以在客户端和目标对象之间起到中介的作用,需要的朋友可以参考下概念代理模式(Proxy):代理模式其实就是多一个代理类出来,替原对象进行一些操作。比如咱有的时候打官司需要请律师,因为律师在法律方面有专长,可以替咱进行操作表达咱的想法,这就是代理的意思。代理模式分为两类:1、静态代理(不使用
2017-06-11 19:56:16
314
转载 Java设计模式之《代理模式》及应用场景
原创作品:http://www.cnblogs.com/V1haoge/p/6525527.html 代理模式算是我接触较早的模式,代理就是中介,中间人。法律上也有代理,比如代理律师之类,委托人将自己的一部分权限委托给代理者,代理者就拥有被代理者(委托人)的部分权限,并且可以以被代理人的名义来实行这些权限,此时代理者与委托人等同,当然代理人也可以在实行权限时配合自己的能力来进行,当然不能
2017-06-11 16:55:55
548
转载 keep-alive和websocket有什么区别
WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling 是指从客户端(一般就是浏览器)不断主动
2017-06-11 15:26:54
1044
转载 LVS+Keepalived实现高可用负载均衡
原文地址:http://blog.chinaunix.net/uid-22312037-id-3595608.html一、原理 1、概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔
2017-06-11 12:51:36
321
转载 DNS在架构设计中的巧用
一、缘起一个http请求从客户端到服务端,整个执行流程是怎么样的呢?一个典型流程如上:(1)客户端通过域名daojia.com请求dns-server(2)dns-server返回域名对应的外网ip(1.2.3.4)(3)客户端访问外网ip(1.2.3.4)向反向代理nginx(4)反向代理nginx配置了多个后端web-server服务
2017-06-11 12:19:20
298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人