- 博客(1064)
- 资源 (60)
- 收藏
- 关注
翻译 初识微服务
WHAT - 什么是微服务微服务简介先来看看传统的web开发方式,通过对比比较容易理解什么是Microservice Architecture。和Microservice相对应的,这种方式一般被称为Monolithic(比较难传神的翻译)。所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DA
2018-03-05 04:22:37 260
转载 无状态服务(stateless service)
一、定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 二、优劣 有状态服务常常用于实现事务(并不是唯一办
2018-03-05 04:22:06 4237
转载 使用HeartBeat实现高可用HA的配置过程详解
使用HeartBeat实现高可用HA的配置过程详解一、写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。 这样,一台 web 服务
2018-03-05 04:21:39 421
翻译 Nginx实现集群的负载均衡配置过程详解
Nginx实现集群的负载均衡配置过程详解 Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已。 Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和内核的修改,它只是单纯地把用户的请求转发到后面的机器上。这就意味着,后端的 RS 不需要配置公网。一、实验环境Nginx 调度器 (pu
2018-03-05 04:21:09 718 1
转载 使用LVS实现负载均衡原理及安装配置详解
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发
2018-03-04 09:46:23 247
转载 LVS:三种负载均衡方式比较+另三种负载均衡方式
什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器
2018-03-04 09:45:53 169
原创 Nginx/LVS/HAProxy负载均衡软件的优缺点详解(小结)
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大
2018-03-04 09:45:21 242
转载 负载均衡层次结构:LVS Nginx DNS CDN
作为后端应用的开发者,我们经常开发、调试、测试完我们的应用并发布到生产环境,用户就可以直接访问到我们的应用了。但对于互联网应用,在你的应用和用户之间还隔着一层低调的或厚或薄的负载均衡层软件,它们不显山不露水默默的发挥着重要的作用,以至于我们经常忽略了它们的存在。因为负载均衡层通常不在一般开发人员的问题域内,而且它们一般都是现成且成熟的解决方案,以至于我们习惯性的忽略和认为乏善可陈。其实不然,本文就
2018-03-04 09:44:40 235
翻译 基于Docker的负载均衡和服务发现
应用的容器化和微服务化带来的问题在缺省网络模型中,容器每次重启后,IP会发生变动,在一个大的分布式系统保证IP地址不变是比较复杂的事情IP频繁发生变动,动态应用部署无法预知容器的IP地址,client端如何发现server端的访问端点?解决方案(根据客户端是否有感知进行分类)客户端的发现。client 订阅注册中心,有一个固定的注册中心地址,client订阅某个服务的注册中
2018-03-04 09:43:40 3242
转载 软件负载均衡(续)
一、软件负载均衡概述硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Nginx,Lvs,HaProxy等。本文参考大量文档,部分为直接拷贝,参考出处见负载均衡详解(4)。二、Ngnix负载均衡Ngnix是一款轻量级的Web服务器/反向代理服务器,工作在七层Http协议的负载均衡系统。具有高性
2018-03-04 09:41:20 304
翻译 大型网站架构系列:负载均衡详解
面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决
2018-03-04 09:35:03 177
原创 四层、七层负载均衡的区别
一、简介所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的
2018-03-04 09:34:33 750
翻译 负载均衡概述
负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元
2018-03-04 09:33:14 158
原创 观察者模式
简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 观察者模式的结构 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Source/List...
2018-03-03 12:28:02 164
转载 适配器模式
适配器模式: 将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本不兼容的类可以一起工作。类图:角色:-目标接口:Target 客户所期待的接口,目标可以是具体的或者抽象的类也可以是接口-需要适配的类Adaptee:-适配器 Adapter:通过包装一个需要适配的对象,把原接口转换成目标接口。实例:package adapter; 2 3 public interface...
2018-03-03 12:25:16 114
原创 原型模式
原型模式: 原型模式是一种创建型模式,通过复制已存在的实例来获得新的实例,而不是新建实例。被复制的实例就是所称的原型,这个原型是可定制的,短时间创建大量对象时,可以考虑使用原型模式Tip:原型模式中的拷贝分为浅拷贝和深拷贝:浅拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象。深拷贝:对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制。...
2018-03-03 12:20:50 158
原创 创建者模式Builder
创建者模式: 分离对象子组件的单独构造(由Builder来负责)和装配(由Director负责),对象的构造比较复杂时使用 该模式。类图:Builder 抽象建造者接口,规范各个组成部分的构建。 ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例。 Product 产品角色,创建返回的对象。 Director 导演者角色,负责创建以及使用。优点: ...
2018-03-03 12:18:43 165
原创 设计模式-工厂方法模式
1. 为什么需要工厂方法模式: 工厂方法模式意在分离产品与创建的两个层次,使得用户在一个工厂池中科院选择想使用的产品,而忽略其创建过程。进一步说,就像一个大型工厂,对消费者而言,只需知道都有什么工厂的产品生产出来,而不必关注产品是如何生产的,但对于工厂来说,需要知道产品的制造过程。2.模式角色与类结构图 Creator: 创建工厂的接口 ConcreteCreator: 具体产品实现 P...
2018-03-03 12:17:36 120
原创 设计模式-抽象工厂模式
1.为什么需要抽象工厂模式: 提供对象的使用接口,隐藏对象的创建过程。2.类图结构: 3.参与角色AbstractFactory 提供创建对象的接口。 ConcreteFactory 提供真正创建对象的实现类,用于组合并创建不同的对象,实现一个产品族。 AbstractProduct 提供对象的使用接口。 ConcreteProduct 提供真正的适用对象,隐藏该对象的创建过程,是工厂...
2018-03-03 12:16:21 137
翻译 访问者模式
对于某个对象或者一组对象,不同的访问者,产生的结果不同,执行操作也不同。此时,就是访问者模式的典型应用了。 应用场景 1 不同的子类,依赖于不同的其他对象 2 需要对一组对象,进行许多不相关的操作,又不想在类中是现在这些方法 3 定义的类很少改变,但是执行的操作却经常发生改变。 Context 环境角色class Context{
2018-03-03 12:12:43 146
翻译 单例设计模式-java
在实际项目中单例模式常见应用场景列举如下:1.servlet编程中,每个servlet就是单例2.网站计数器,和Application(servlet中涉及)3.Strucs1框架中,控制器对象也是单例4.在Spring中,每个bean默认是单例,便于Spring容器管理5.数据库连接池6.应用程序日志应用一般用单例实现,项目操作配置文件的类单例模式的优点:单例模式只生成一个实例,减少系统性能开销...
2018-03-03 12:09:39 156
转载 Oozie workflow工作流action间参数传递实现
假设workflow里有两个action节点,shell和hive,hive需要用到shell节点里的值,shell脚本如下#!/bin/sh day=`date '+%Y%m%d%H'` echo "day:$day" hive节点需传入day这个参数。需要用到shell节点里<capture-output/>这个属性,如下<action name="shell-...
2018-03-03 11:47:07 573
翻译 Oozie工作流属性配置的方式与策略
Oozie工作流属性配置的三种方式Oozie有三种方法可以给工作流提供属性属性配置:App部署文件夹根目录下的:config-default.xml作业属性文件:job.properties在命令行中指定属性:-Dkey=valueOozie工作流属性配置的策略(最佳实践)坦率地讲,三种配置相互重叠,全部使用会使属性的配置过于分散,使得查找和定位属性变得繁琐。就我个人的经验,我倾向于这样做:对于静...
2018-03-03 11:46:36 389
转载 工作流引擎Oozie(二):coordinator
1. 简介coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers)。简单点说,coordinator按所定义的时间周期进行轮询,若数据生成条件满足,则触发workflow任务;否则,则等待数据生成或跳过(调度策略由设置的超时时间决定)。2. 详解coordinator-app<coordinator-a...
2018-03-03 11:46:05 1132
转载 工作流引擎Oozie(一):workflow
1. Oozie简介Yahoo开发工作流引擎Oozie(驭象者),用于管理Hadoop任务(支持MapReduce、Spark、Pig、Hive),把这些任务以DAG(有向无环图)方式串接起来。Oozie任务流包括:coordinator、workflow;workflow描述任务执行顺序的DAG,而coordinator则用于定时任务触发,相当于workflow的定时管理器,其触发条件包括两类:...
2018-03-03 11:45:29 820
翻译 Oozie4.2 安装部署、以及example测试
编译:使用的环境是:Hadoop2.6.0、Spark1.4.0、Hive0.13.1、Sqoop1.4.4编译Oozie的命令:./mkdistro.sh -Phadoop-2 -Dhadoop.auth.version=2.6.0 -Ddistcp.version=2.6.0 -Dsqoop.version=1.4.4 -Dhive.version=0.13.1 -Dpig.version=0...
2018-03-03 11:44:38 286
原创 oozie 常用命令
1.验证wokflow.xmloozie validate /appcom/apps/hduser0401/mbl_webtrends/workflow.xml 2.提交作业,作业进入PREP状态 oozie job -oozie http://localhost:11000/oozie -config job.properties -submit job: 14-20090525161321-o...
2018-03-03 11:43:34 1596
转载 Oozie-coordinator调度
当有一个复杂的工作流job,希望每天定时执行,使用crontab方式调用需要编写大量的脚本,还要通过大量的判断来控制每个工作流job的执行顺序问题。Oozie中的Coordinator可以让每个工作流workflow当做一个动作来运行,这样就可以将多个job组织起来,并制定触发时间和频率。它的调度方式有两种:一种是基于时间调度;还有一种是基于数据可用性调度(判断数据是否存在和是否符合标准)。
2018-03-03 11:42:14 846
翻译 Oozie-自定义实现WorkFlow中shell action
拷贝默认的shell目录来进行修改$ cp -r ./examples/apps/shell/ my-apps/定义job.propertiesnameNode=hdfs://bigdata-00:8020jobTracker=bigdata-00:8032queueName=defaultexamplesRoot=user/wulei/my-apps/shell#定义work
2018-03-03 11:40:52 422
转载 Oozie介绍
1. Hadoop常见调度框架:(1)Linux Crontab:Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive -f xxx.sql(2)Azkaban:(3)Oozie:Cloudera公司开源(4)Zeus:阿里开源。Oozie是管理Hadoop作业的工作流调度系统。Oozie定义了控制流节点和动作节点。Oo...
2018-03-03 11:38:41 243
翻译 集合介绍
Martin Odersky和Lex Spoon在许多人眼中,新的集合框架是Scala 2.8版本中最重要的变化。斯卡拉之前有过收藏(实际上新的框架与它们基本兼容)。但只有2.8为集合类型提供了一个通用的,统一的和全面的框架。尽管第一眼看到集合的添加是微妙的,但他们在编程风格中所能引起的变化可能是深刻的。事实上,通常情况下,您好像在更高层次上工作,程序的基本构建块是整个集合而不是元素。这种新的编程...
2018-02-22 20:31:02 180
翻译 再聊多线程06--了解Task的内部调度机制TaskScheduler
时我们在用多线程开发的时候少不了Task,确实task给我们带来了巨大的编程效率,在Task底层有一个TaskScheduler,它决定了task该如何被调度,而在.net framework中有两种系统定义Scheduler,第一个是Task默认的ThreadPoolTaskScheduler,还是一种就是SynchronizationContextTaskScheduler,以及这两种
2018-01-30 11:41:30 1597
翻译 再聊多线程05--线程池
说到多线程,不可不说线程池,C#中关于池的概念很多,今天来整理下ThreadPool的使用。 是的,如果你很懒,如果你的执行任务比较短,如果你不想对线程做更精细的控制,那么把这些繁琐的东西丢给线程池吧。 一:ThreadPool 好了,下面看看TheadPool下有哪些常用的方法。1:GetMaxThreads,GetMinThreads 首先我们肯定好奇线程池
2018-01-30 11:41:02 205
翻译 再聊多线程04--信号量
今天整理“信号量”的相关知识,其实想想也蛮有趣的,锁,互斥,信号量都可以实现线程同步,在framework里面主要有三种。:ManualResetEvent:AutoResetEvent: Semaphore 好,下面就具体看看这些玩意的使用。 一:ManualResetEvent 该对象有两种信号量状态True和False,好奇的我们肯定想知道True和
2018-01-30 11:39:50 335
翻译 再聊多线程03--互斥体
没想到我的前两篇文章还挺受欢迎的,谢谢大家,今天整理下Mutex的使用。一:Mutex首先看下MSDN对它的解释: 不错,出现了一个亮点,可用于“进程间同步“,既然进程间都可以同步,那线程同步对它来说不是小菜一碟吗?好的,还是看下Mutex在线程中发挥的神奇功效。1: 线程间同步 Metux中提供了WatiOne和ReleaseMutex来确保只有一个线程
2018-01-29 08:27:18 250
翻译 再聊多线程02--锁机制
当多个线程在并发的时候,难免会碰到相互冲突的事情,比如最经典的ATM机的问题,并发不可怕,可怕的是我们没有能力控制。线程以我的理解可以分为三种① 锁。② 互斥。③ 信号。 好,这一篇主要整理“锁”,C#提供了2种手工控制的锁一: Monitor类 这个算是实现锁机制的纯正类,在锁定的临界区中只允许让一个线程访问,其他线程排队等待。主要整理为2组方法。
2018-01-29 08:26:54 185
翻译 再聊多线程01--尝试Thread
原本准备在mongodb之后写一个lucene.net系列,不过这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面,故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记。 好了,我们知道“负载”是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载。往小处说,线程也需要负载,面对海量的用户请求,我们的单线程肯定扛不住,
2018-01-29 08:26:32 217
原创 闲扯大型网站架构演变03
在一个项目还是单体架构的时候,所有的js,css,image都会在一个web网站上,看起来并没有什么问题,比如下面这样: 但是当web网站流量起来的时候,这个单体架构必须要进行横向扩展,而在原来的架构中静态资源这羊毛是出在单体架构这头羊身上,所以横向多少个单体,就有多少个静态资源文件夹,比如下面这样的架构。那这种架构有什么问题呢? 总的来说会有如下二个问题: 1.
2018-01-29 08:26:12 200
原创 闲扯大型网站架构演变02
缓存说到缓存,我想大家跟我一样都很兴奋,当我们遭遇网站性能瓶颈的时候,缓存是一剂强心针,也是一粒紧急妈富隆,从而在优化网站性能方面冠上了第一定律的帽子,我们前年在做淘应用的时候,就遭遇了性能瓶颈,短时间内采用缓存紧急优化,给我们大优化之前争取了宝贵的时间。 一:缓存的种类 要说缓存有多少种,太多了,比如浏览器缓存,文件缓存,片段缓存,数据库缓存等等,合理利用
2018-01-29 08:25:08 165
原创 闲扯大型网站架构演变01
我们知道一个网站都是随着业务的发展,逐渐演变成几万服务器,几亿用户数的大型网站,经历了若干年,甚至上十年的发展成为大型网站,然而真正亲身经历这个发展过程的人已经不多了,这种人也是拿着公司股票,赶都赶不走的人,所以正因为很多人没有亲身经历过,所以对架构的演变没有深刻的了解,包括我自己在内,不过没吃过猪肉,也看过猪跑。。。 一:第一代架构 这年头创业大多都是从穷屌丝开始的,奔着
2018-01-29 08:24:45 177
软件架构师的12项修炼
2017-07-03
Linux系统管理技术手册
2017-07-01
淘宝技术这十年
2017-07-01
Hadoop技术内幕
2017-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人