自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Spring Cloud Netflix 负载均衡组件—Ribbon 入门案例

Ribbon是Spring Cloud Netflix提供的负载均衡组件,提供了很多算法,比如轮询、随机等帮助我们根据某种机制向服务提供端发送请求。在Netflix中,Ribbon可以从Eureka Server中获取服务提供者地址列表,并且基于负载均衡算法,请求其中的一个服务实例。引入Ribbon的组件非常简单,我们只需要在项目中引入Ribbon,请使用groupID为org.springframework.cloud和artifact ID为spring-cloud-starter-netflix-

2020-07-31 18:25:01 187 2

原创 Sprng Cloud Netflix 服务注册与发现—Eureka 高级应用

Eureka APIEureka Server 不仅仅可以用于Spring Cloud 应用程序,也可以用于注册其他类型的服务,因为其专门提供了一组用于注册服务的API。该Spring Cloud版本的API在eureka-core jar包中的com.netflix.eureka.resource包中,如下表为 Eureka Server 提供的Restful风格的API: 请求方式 URL 说明 GET

2020-07-30 17:19:07 159

原创 Spring Cloud Netflix 服务注册与发现—Eureka 配置详解

任何一个框架都必须有相应的配置才能够使得一系列的功能生效,Spring Cloud也不例外,虽然Spring Boot的使用使得我们省去了很多繁琐的Bean配置,但是当我们使用一些特定的功能时,我们不得不做Bean的属性配置。Eureka Server也同样需要配置Bean的一些属性才能让功能正常使用。总得来说Eureka 注册中心有三类配置:一是Eureka实例配置,而是Eureka Server配置、三是Eureka Client配置。Eureka Server 配置Eureka Server的

2020-07-29 19:32:39 341

原创 Spring Cloud Netflix 服务注册与发现 — Eureka 入门案例

Spring Cloud Netflix是Spring Cloud集成Netflix开源分布式组件所给出的一套微服务方案。包括注册中心(Eureka),Hystrix(熔断器)、Zuul(网关路由)、Archaius(配置管理)、Ribbon(负载均衡)、Turbine(监控)、Feign(声明式调用)等组件。本篇我们介绍Spring Cloud Netflix组件中的Eureka组件。Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含Server和Client两部分。

2020-07-29 14:59:26 165

原创 微服务之Spring Cloud 解决方案

当前Spring Cloud几乎成了微服务的代名词,只要一提到Spring Cloud,必定会想到微服务,而一旦提到微服务必定会提到Spring Cloud,那么Spring Cloud的定位到底是什么呢。官方是这样定义Spring Cloud的:Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、熔断机制、智能路由、微代理、控制总线、一次性令牌、全局锁、leadership 选举、分布式sessions、群集状态)。开发人员使用SpringCloud可.

2020-07-24 20:56:39 382 1

原创 微服务架构中的问题以及解决方案

在单体架构时,项目的部署、修改都很简单,一旦服务器宕机,则整个服务都不可用。而在微服务中,一个服务可能部署在好几百甚至成千上万台节点上,我们如何管理这些节点的服务,调用服务时,该调用用那一台节点机上的服务,如果调用的服务出故障怎么办,如何监控服务的调用链路等等很多的问题,本篇我们会介绍微服务架构下遇到的问题,以及Spring Cloud给出的解决方案。配置中心为何需要配置中心,在微服务中,一个服务可能部署N多个节点,如果需要修改服务中的一个配置,难道我们要去手动修改成百上千个节点?我想就算是十几个或

2020-07-24 20:56:20 2409

原创 微服务与SOA以及服务间通讯协议

说到微服务,就一定会想到微服务、分布式、集群、SOA、SOAP、restful、Http、RPC等相关概念,而这些概念都一些界限都非常的模式,很难理清楚确切的概念,本篇主要是介绍我对微服务中常遇到的一些问题的理解,很多东西也是查看了很多书籍之后才有一个模糊的概念。分布式与集群首先说是分布式与集群的概念,关于分布式比较官方的术语就是一组不同且有相互关联的组件分布在网络计算机上,并且仅仅通过消息传递来通信并协调行动。而集群则是将同一种组件分布在网络计算机上。它们之间的区别在于是否是同一组件(服务)的部署

2020-07-24 20:56:02 1611

原创 大型级网站架构演变与变迁

大型网站都是从小型网站发展而来,架构也是一样。任何一个大型网站的架构都不是从一开始都是一层不变的,而是随着用户量和数据量的不断增加不断演进的结果。比如腾讯最初是靠ICQ起家,而阿里最初则是使用LAMP架构模式。了解大型网站的架构变迁更有助于我们了解微服务的由来。单一应用架构在网站建立之初,可能并没有特别多的用户,我们仅仅用一个服务器就可以满足需求了,这个时候我们将所有业务打成一个war包,与数据库一起部署在一台机器上。如下图为最初时期的单一应用架构:应用于数据分离随着用户的增多,业务量.

2020-07-24 20:55:47 206

原创 Zookeeper应用实战—— Master 选举

Master选举也是分布式系统中常见的场景,在分布式架构中,为了保证服务的可用性,通常会采用集群模式,也就是当其中的一个机器宕机后,其他节点会接替有故障的机器继续工作。在这种场景中需要选举一个节点为Master节点,当Master节点故障后从其他节点中选取一个节点作为Master节点继续工作。ZooKeeper有两种方式可以帮助实现Master的选举:第一种类似于分布式锁的场景,由Master创建一个临时节点,其他机器监听该节点,一旦Master宕机,该临时节点被删除,其他服务机器监听到节点被删除,则创

2020-07-20 21:44:55 294

原创 Zookeeper应用实战——分布式锁

在多线程中,我们可以使用Synchronizeed或者Lock解决多线程情况下共享资源访问的问题,但是它们处理的范围是线程级别的。在分布式架构中多个进程对同一个共享资源进行访问也存在数据安全问题,这个时候也需要使用锁来解决,这就是分布式锁。因为ZooKeeper支持临时节点和节点唯一性使得使用ZooKeeper实现分布式锁成为可能。使用ZooKeeper获取锁的时候,可以在/Locks节点下创建一个临时借点/lock。ZooKeeper基于同级节点的唯一性,使得只有一个客户端能创建成功,该客户端就获取到

2020-07-17 22:18:41 193

原创 ZooKeeper Java客户端—权限控制

ZooKeeper是支持权限管理的,能够控制对节点的访问权限,不管是使用ZooKeeper原生APi还是使用ZkClient API,亦或是使用Curator API,我们在创建节点的时候都可以为节点授权,代码如下所示:/原生APi创建节点,授予的权限为ZooDefs.Ids.OPEN_ACL_UNSAFE//后续我们会讲述这个权限zooKeeper.create("/zktest2","zktest".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, Create

2020-07-17 16:36:55 511

原创 ZooKeeper Java 客户端连接— Curator

除了ZkClient客户端之外,还有一个用的比较多的ZooKeeper客户端 curator,它是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等,相对于ZkClient它表现的更为强大。Maven依赖引入Curator也是对ZooKeeper的封装,相对于ZkClient,它表现的更为强大,也是Spring Cloud集成ZooKeeper所使用的

2020-07-17 11:35:36 419

原创 ZooKeeper Java 客户端连接— ZkClient

使用原生ZooKeeper客户端,比较的复杂,在调用APi时,需要传入较多的参数,并且不支持递归创建节点,递归删除节点,好在目前有很多优秀的框架对ZooKeeper进行了封装,ZkClient就是一款比较优秀的Zookeeper客户端。ZkClient相对于ZooKeeper API用起来更加简单。Maven依赖引入ZkClient是对ZooKeeper原生客户端的封装,除了因此ZooKeeper的jar包之外,我们还需要引入ZkClient的jar包,Maven如下:<dependen

2020-07-17 08:57:13 976

原创 ZooKeeper Java 客户端连接—原生 API

第二部分我们使用命令行讲解了Zookeeper的部分使用,除此之外ZooKeeper还提供了Java和C客户端,我们可以通过使用代码的方式连接和操作ZooKeeper服务。Zookeeper为Java连接提供了zookeeper包用于连接ZooKeeper服务,除此之外还有封装了zookeeper的zkClient客户端和curator客户端。Maven依赖Zookeeper官方为我们提供了客户端用于使用Java连接和操作Zookeeper服务器,我们需要引入的Maven如下:<depe

2020-07-17 08:56:49 267

原创 ZooKeeper安装部署与命令行客户端使用

ZooKeeper的安装部署比较简单,ZooKeeper同时提供了单机部署与集群部署两种部署形式,并且提供了命令行客户端。ZooKeeper单机部署从Zookeeper下载稳定的ZooKeeper版本,该学习笔记下载的地址为:Zookeeper下载。然后解压到要部署的目录,目录中包含以下文件夹:bin目录:为ZooKeeper的执行文件目录,包括服务启动执行文件和客户端执行文件等 conf目录:为ZooKeeper的配置文件目录,包括日志的配置和Zookeeper服务的配置 docs目录:为

2020-07-16 17:37:30 249

原创 ZooKeeper简介与项目中应用

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。它被设计成易于编程,并且使用了一种以熟悉的文件系统目录树结构为样式的数据模型。它运行在Java中,绑定了Java和C语言。总所周知,服务协调是出了名的很难做。它们特别容易出错,例如竞争条件和死锁。ZooKeeper背后的动机是减轻分布式应用程序从零开始实现协调服

2020-07-16 17:37:12 720

原创 设计模式之装饰模式

装饰者模式是指在不改变原有对象的基础之上,将功能附加到对 象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式,为对象扩展一些额外的职责。比如给房子装修就可以当作是一个装饰者模式,装饰者在代码程序中适用于以下场景: 用于扩展一个类的功能或给一个类添加附加职责;动态的给一个对象添加功能,这些功能可以再动态的撤销。装饰者模式在项目中经常用到,不仅仅是框架中,就连Jdk API中也有用到,我们以JDK API 中的一个装饰者模式为例讲述装饰者模式。在 JDK 中体现最明显的类就是 IO

2020-07-07 17:34:59 93

原创 Spring Boot 原理解析—自动装配原理

自动装配是Spring Boot的核心部分,也是Spring Boot功能的基础,正是由于自动装配,才将我们从Bean的繁复配置中解脱出来。那么Spring Boot中的自动装配指的是什么?我们继续以Spring MVC为例,不使用Spring Boot时,我们可能需要配置视图解析器,文件解析器,请求适配器等等各种Bean,如果在使用数据库,redis,还需要配置数据库、redis相关Bean。我们以配置redis为例,如下为Spring中Bean的配置:<bean id="jedisPoolC

2020-07-07 17:34:31 308

原创 Spring Boot 原理解析—启动类包扫描原理

我们知道在使用Spring Boot时,Spring会自动加载Spring Boot中启动类包下以及其子包下的带注解的类,本篇不会讲述是如何加载注解类的,因为这是属于Spring的内容,我们只讲述为什么会根据启动类加载子包下的带注解的类。在讲解Spring Boot源码之前我们先看一下Spring中包的扫描方式一种是@ComponentScan("cn.org.microservice.spring.ioc.annotation")注解,另一种则是以XML的方式配置:<context:compo

2020-07-03 14:54:40 2293 1

原创 设计模式之模板模式

模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。它适应的场景有:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现;各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。(百度百科),看到定义或许会很迷糊,我们可以通过例子说明,其实模板模式的一个典型的应用就是Spring的JdbcTemplate,这是一个经典的模板模式,我们就以Spring的JdbcTemplate为例子介绍模板模式,

2020-07-02 17:51:43 144

原创 设计模式之观察模式

观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式(Observer)完美的将观察者和被观察的对象分离开。(百度百科)。我们使用JDK提供的API来实现一个观察者模式,学生向老师提问问题,然后通知老师有学生提问,这个案例里面,老师属于观察者,需要实现Observer接口。学生属于被观察者,需要继承

2020-07-02 17:51:34 220

原创 Spring Boot 原理解析—从入口SpringApplication说起

我们说Spring Boot简化了Spring的开发,可以根据导入的starter包自动向Spring容器中注册Bean。在Spring Boot之前,我们要向Spring容器中注册Bean,首先需要配置xml,如果是Web容器,则将spring.xml位置配置到Spring 提供的监听器中,由Spring解析注册Bean,否则则使用new ClassPathXmlApplicationContext("/spring.xml")或者new AnnotationConfigApplicationContex

2020-07-01 18:27:22 369

原创 设计模式之策略模式

策略模式(Strategy Pattern)是指定义了算法家族并分别封装起让它们之间可以互相替换,此模式使得算法的变化不会影响使用算法的用户。一般策略模式由三部分组成:抽象策略角色: 策略类,通常由一个接口或者抽象类实现;具体策略角色:包装了相关的算法和行为;环境角色:持有一个策略类的引用,最终给客户端调用。假如我们出去旅游,可以选择坐高铁,坐火车,汽车,飞机,还可以自驾游,这几种交通方式就可以当成是一种策略。我们可以根据自己的实际情况选择对应的策略出行。首先我们先定义一个出行策略:public

2020-07-01 17:41:46 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除