自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

攻城狮Luke(刘健彬)

Java技术专家,同名公众号【攻城狮Luke】

转载 SpringBoot自动装配原理

引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用...

2020-07-09 23:49:18 24 0

原创 【Spring Cloud H 版教程】第七篇:远程调用服务组件OpenFeign 之进阶
原力计划

前面一篇文章 [【远程调用服务组件OpenFeign 之入门】](https://blog.csdn.net/u010739551/article/details/106056987) 中我们已经简单介绍了 OpenFeign 的使用情况,OpenFeign 作为一个 HTTP 客户端组件,还有很...

2020-05-13 16:58:13 119 0

原创 【Spring Cloud H 版教程】第六篇:远程调用服务组件OpenFeign 之入门
原力计划

Feign 是声明式 HTTP 客户端,它屏蔽了底层 HTTP 的调用过程,让编写 Web 服务客户端更加容易,使用 Feign 只需要创建接口并添加上简单的注解,就可以以面向接口编程的方式发起远程 HTTP 服务调用。Feign 具有可插拔的注解支持,包括 Feign 注解和 JAX-RS 注解...

2020-05-12 14:44:08 153 0

原创 【Spring Cloud H 版教程】第四篇:注册中心组件Consul
原力计划

在前面的文章我们已经提到过,服务发现是微服务架构不可或缺的基础设施组件,Eureka 作为 Spring Cloud 标准服务发现的实现组件之一,由 Netflix 公司研发,是目前企业用得最多的注册中心组件。Eureka 包含了 1.x 版本 和 2.x 版本,其中 1.x 版本在国内被广泛使用...

2020-04-29 16:08:35 258 0

原创 【Spring Cloud H 版教程】第三篇:注册中心组件 Eureka 之进阶
原力计划

这节课我们学习了 Eureka 的相关特性,自我保护机制的目的是服务端为了避免客户端由于网络波动等原因而导致注册信息的丢失,建议开启;如果说自我保护是一种服务端的检查机制,那么健康检查则可以说是一种客户端自己本身的一种检查,主动通知服务端修改自身的状态,能够有效避免被调用方的线程阻塞;Discov...

2020-04-29 15:44:46 113 0

原创 【Spring Cloud H 版教程】第二篇:注册中心组件 Eureka 之入门
原力计划

1.概述 Eureka 是 Netflix 开源的注册中心组件,用于集成到 Spring Boot 应用程序。开发者们使用该组件只需要添加一些简单的配置就可以快速启用,构建出大型分布式微服务系统。一个复杂的分布式微服务系统通常会由成百上千个 Spring Boot 应用程序组成,如果尝试手动配置每...

2020-04-29 15:24:17 104 0

原创 【Spring Cloud H 版教程】第五篇:负载均衡组件Ribbon

Ribbon is a client-side load balancer that gives you a lot of control over the behavior of HTTP and TCP clients. Feign already uses Ribbon, so, if yo...

2020-04-29 14:56:05 86 0

原创 Spring Cloud Alibaba 教程 | RocketMQ(二):生产者和消费者

上图是RocketMQ一些核心概念组件之间的关系图,在深入讲解RocketMQ生产者和消费者之前我们先来熟悉一下RocketMQ的核心概念。生产者根据不同的业务场景需求可以采取不同的发送策略。例如同步发送、异步发送、延迟发送、发送单向消息、发送事务消息等等

2020-02-26 16:46:11 242 0

原创 Spring Cloud Alibaba 教程 | RocketMQ(一):快速入门

RocketMQ概述 RocketMQ是一款由阿里研发的高性能高可靠性的分布式消息队列,使用Java语言开发,该项目已经贡献给了Apache基金会,成为Apache的顶级开源项目。 在早期,阿里内部使用ActiveMQ作为其消息传递中间件,随着业务的快速增长,基于ActiveMQ的消息队列集群在处...

2020-02-20 09:35:12 475 0

原创 Spring Cloud Alibaba 教程 | Nacos(六)

集群模式部署 前面我们已经学习了Nacos作为注册中心、配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来学习一下Nacos的集群模式部署。 官方推荐使用:http://nacos.com:port/op...

2020-01-07 14:53:18 166 0

原创 Spring Cloud Alibaba 教程 | Nacos(五)

扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profiles.active} . ${file-extension} 默认Group为public的配置文件...

2020-01-03 15:45:24 103 0

原创 Spring Cloud Alibaba 教程 | Nacos(四)

Nacos环境隔离 Nacos管理台有一个单独的菜单“命名空间”,里面默认存在一个名为“public”的默认命名空间,我们在使用Nacos时不管是作为注册中心还是配置中心,都是作用在该命名空间之下的,那么这个命名空间到底起着什么作用呢?其实Nacos基于Namespace帮助用户逻辑隔离多个命名空...

2019-12-31 17:36:36 121 0

原创 Spring Cloud Alibaba 教程 | Nacos(三)

使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多种环境的参数,使得项目在打包过程中不需要过多的关注目标环境问题,达到项目一次打包,多处运行的目标。...

2019-12-27 15:39:44 108 0

原创 Spring Cloud Alibaba 教程 | Nacos(二)

源码解析客户端注册过程 nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自己的管理台,对于nacos注册中心服务我们后面文章会单独抽出来讲解,这篇文章我们先来源码解析我们自...

2019-12-25 18:59:34 168 0

转载 使用注解实现策略模式

需求描述 现在我们有一个接受供应商订单状态通知的接口,目前支持的功能有退款,改签,后续可能需要接入新功能,比如航变,订单状态改变之类。接口的请求格式一致,接口如下: 请求 package com.ahut.contract.flight; /** * @desc : 供应商通知请求 * @a...

2019-12-24 16:29:49 410 0

原创 Spring Cloud Alibaba 教程 | Nacos(一)

什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务...

2019-12-20 10:40:57 155 0

转载 主流微服务注册中心浅析和对比

开源产品受开发者热捧,是因为其代码透明、可以参与共建、有社区进行交流和学习,当然更重要的是开源产品的接入成本低。个人开发者或者中小型公司往往会将开源产品作为选型首选。 开发者通过阅读源代码,理解产品的功能设计和架构设计,同时也可以通过本地部署来测试性能,随之而来的是对各类开源产品的对比,用以选型。...

2019-12-17 17:16:53 72 0

原创 Spring Cloud Alibaba 教程 | 前世今生

Spring Cloud Alibaba是什么 先来看一下官方是怎么定义Spring Cloud Alibaba的: Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud 编程模型轻松使用...

2019-12-16 10:53:47 102 0

原创 完全透析设计模式(5)- 适配器模式

适配器模式(Adapter) 适配器模式是一种结构型设计模式(结构型设计模式包含桥接、适配器、组合、装饰器、外观、享元、代理,共有七种),其核心的思想就是在两个独立或者不兼容的接口之间搭建一座桥梁,通过这个桥梁可以将两者组合起来。我们在使用适配器模式是存在前提条件,那就是系统中已经存在了两个原来就...

2019-12-06 16:01:40 66 0

原创 完全透析设计模式(4)- 桥接模式

桥接模式(Bridge) 桥接模式属于结构型设计模式,其核心的设计思想就是将抽象化结构和实现化结构隔离开来,使两者达到解耦的目的,同时又将两者通过聚合连接起来,配合完成功能。目的就是将抽象部分与实现部分分离,使它们都可以独立的变化,同时它们之间还存在联系,毕竟使用者最终还是要通过调用抽象化的对象去...

2019-11-28 14:33:39 64 0

原创 完全透析设计模式(2)- 模板方法

模板方法模式(Template Method) 我曾在一本书上看过作者将模板比喻成带有镂空文字的薄薄的塑料版。只要用笔在模板的镂空处就可以临摹出整齐的图案。我们可以通过塑料版上镂空的洞就可以知道是什么文字图案,但是文字图案具体是什么颜色的,效果如何,就只能依赖于使用什么样的笔去临摹了。但是文字图案...

2019-11-20 16:24:51 58 0

原创 完全透析设计模式(1)- 工厂方法

工厂方法模式(Factory Method) 工厂方法设计模式属于创建型设计模式(有的资料称构建型设计模式)。在工厂方法模式中,父类决定实例的生成方式,这种方式表现出来就是一个抽象类,所以并不决定生成的具体的类,具体的实现就交给继承的子类去实现。这里抽象的父类可以理解为“工厂”,而具体的实现子类则...

2019-11-19 16:10:59 53 0

原创 Milo源码解析(六)

解析Confirm阶段 回到InitiatorMiloTransactionHandler,当try阶段执行完成之后,此时整个事务是处于中间状态的,我们需要做就是从此前保存的事务日志中获取到参与者的目标类和方法,从而执行对应的confirm方法,同样在confirm执行的阶段需要全部成功,失败或者...

2019-11-04 15:34:02 93 0

原创 Milo源码解析(五)

深入解析Try阶段 上一篇博客介绍了InitiatorMiloTransactionHandler是如何处理事务发起者发起的调用,try阶段完成后执行confirmPhase,否则执行cancelPhase,在解析这两个方法之前我们先再回到tryPhase方法里面看一下,milo框架当创建完事务日...

2019-10-29 13:41:12 218 0

转载 https单向认证和双向认证

HTTP 简介: HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。 使用TCP端口为:80 HTTPS Hy...

2019-10-24 16:14:32 46 0

原创 Milo源码解析(四)

拦截事务方法 Milo框架在执行完初始化工作之后,开始等待事务请求,并且拦截该方法,拦截的方法前面已经提到过就是带注解@MiloTCC的方法。这其中拦截方法主要是通过spring的AOP方面的内容。回到我们的项目源码中来,在milo-core模块中,可以找到拦截器AbstractMiloTrans...

2019-10-21 15:46:38 138 0

原创 Milo源码解析(三)

Milo的初始化 上一篇文章我们已经介绍了Milo里面的测试样例,并且执行了测试样例,得到了我们想要的结果,订单服务、库存服务和账户服务数据保持一致。细心的朋友会发现我们项目引入的milo框架会在application.yml配置的milo-tcc数据库参数对应的库里面生成对应的事务日志表。 ...

2019-10-18 09:54:35 129 0

原创 Milo源码解析(二)

引入Milo框架 在样例工程中保护了三个微服务模块cloud-order、cloud-account、cloud-stock。这三个模块模拟了具有分布式事务场景的下单场景,用户购买商品下单,生成订单,接着扣减用户的账号金额,最后扣除商品的库存。由于实在分布式环境,三个微服务拥有自己独立的数据库,这...

2019-10-17 10:53:31 297 0

原创 Milo源码解析(一)

分布式事务框架Milo Milo是一个分布式事务TCC模式的解决方案,目前已经发布1.0版本,可以在开源中国上面搜索得到。TCC模式下的分布式事务是所有分布式事务解决方案中实时性要求最高的,同时也是对业务开发成本要求最高的。所以TCC模式会在要求实时性较高的分布式事务场景中使用,例如订单支付这样的...

2019-10-16 16:53:57 403 0

转载 Java中的SPI机制

本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。 1 SPI是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 ...

2019-09-12 17:28:36 71 0

原创 分布式事务(3)实现TCC的基础技术

概述 通过前面的文章介绍,我们已经知道了分布式事务的几种常见的解决方案,从我的从业经历来看,大部分的企业采用TCC或者基于消息队列中间件的最终一致性这两种解决方案。本专栏也将重点剖析这两种方案的具体实现,下面我们先来了解一下分布式环境下微服务实现分布式事务TCC方案的一些基础支持技术。 我们知道T...

2019-09-06 16:09:50 164 0

转载 分布式事务(2)基础理论

这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。 相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事务”、“最终一致性”、“TCC”等这些知识碎片,而是能够将知...

2019-09-05 09:29:08 140 0

原创 java多线程之并发框架Disruptor

java多线程之并发框架Disruptor什么是DisruptorDisruptor的特性Disruptor入门例子例子结果参考 什么是Disruptor Disruptor是一个高性能的无锁线程间通讯框架,作者英国LMAX公司,其用于自己一种新型零售金融交易平台,它能够以很低的延迟产生大量交易,...

2019-08-30 15:51:55 161 0

转载 分布式事务(1)四种解决方案

简述 分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 解决方案 在分布式系统中,要实现分布式事务,无外乎那几种解决方案。 一、两阶段提交(2PC) 两阶段提交(Two-phase Commi...

2019-08-27 11:44:50 192 0

转载 HashMap原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚...

2019-05-13 15:37:30 141 0

转载 java多线程之wait和notify

1. 使用注意事项 1、永远在synchronized的函数或对象里使用wait、notify和notifyAll,不然Java虚拟机会生成IllegalMonitorStateException。 2、永远在while循环里而不是if语句下使用wait。这样,循环会在线程睡眠前后都检查wait...

2019-05-13 15:05:59 81 0

原创 java8特性之集合stream式操作

一、测试类 public class Student { public Student(String city) { this.city = city; } private String city; public String getCit...

2019-05-05 17:20:45 75 0

原创 java8特性之lambda表达式

一、概述 只要是只有一个方法的接口就可以使用lambda表达式,这样的接口被称为“函数式接口”。 二、例子 public interface TestInter { void test(); } public interface TestInter2 { v...

2019-05-05 17:00:46 87 0

原创 java设计模式之策略模式

一、定义算法族和实现 public interface IAttack { public void attack(); } public interface IDisplay { public void display(); } public interfac...

2019-05-05 10:20:16 102 0

转载 logback最佳实践

一、logback介绍 Logback是由log4j创始人设计的一个开源日志组件。LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。 1. logback-core:提供了LogBack的核心功能,是另外两个组件的基础...

2019-04-25 16:06:58 100 0

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