微服务技术
文章平均质量分 93
主要讲解当前主流的分布式框架,SpringCloud、SpringBoot、Dubbo。
杨林伟
像火箭科学家一样思考!
展开
-
深度剖析Eureka服务发现及剔除原理
深度剖析Eureka服务发现及剔除原理转载 2022-12-28 18:02:20 · 1144 阅读 · 0 评论 -
SpringBoot集成Liquibase
文章目录01 引言02 SpringBoot 集成Liquibase step1:添加依赖 step2:添加配置文件 step3:启动项目03 Liquibase规范3.1 代码结构04 文末01 引言Liquibase是一个数据库变更的版本控制工具。项目中通过Liquibase解析用户编写的Liquibase的配置文件,生成sql语句,并执行和记录(执行是根据记录确定sql语句是否曾经执行过,和配置文件里的预判断语句确定sql是否执行)。02 SpringBoot 集成Liquibase ste原创 2022-04-28 19:36:46 · 2526 阅读 · 0 评论 -
微服务技术系列教程(49)-SpringSecurity
文章目录1. SpringSecurity概述2. SpringSecurity功能3. SpringSecurity核心类3.1 Authentication3.2 SecurityContextHolder3.3 AuthenticationManager和AuthenticationProvider3.4 UserDetailsService3.5 GrantedAuthority1. SpringSecurity概述概念:SpringSecurity是一个能够为基于Spring的企业应用系统提供原创 2020-12-20 21:55:48 · 688 阅读 · 0 评论 -
MyBatisPlus代码生成工具(史上操作最简单版本)
文章目录1. 引言2. 效果演示 Step1:首先配置数据库信息 Step2:运行项目,生成代码功能1: 生成代码到指定的目录功能2: 生成代码到target功能3: 生成zip3. 其它细节1. 引言最近在网上找MyBatisPlus代码生成工具类,找到的都不太满意,所以自己重写并开源到了Github,有兴趣的小伙伴可以下载来参考:地址:https://github.com/ylw-github/MP-Generator里面的代码实现细节不用过多的关注,只需要知道怎么配置和使用就可以了,本文来原创 2020-11-19 17:42:41 · 1064 阅读 · 0 评论 -
什么是Service Mesh
本文转载自:https://zhuanlan.zhihu.com/p/61901608Service Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。那么到底什么是Service Mesh?一言以蔽之:Service Mesh是微服务时代的TCP协议。有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。提到Service Mesh,就不得不提微服务。根据维基百科的定义:微服务 (Microservices) 是一种软件架构风格,转载 2020-09-14 10:08:47 · 565 阅读 · 1 评论 -
微服务技术系列教程(48)-SpringBoot WebMvcConfigurer接口
SpringBoot 确实为我们做了很多事情, 但有时候我们想要自己定义一些Handler,Interceptor,ViewResolver,MessageConverter,该怎么做呢。在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated。因此我们只能靠实现WebMvcConfigurer接口来实现。接下来让我们来看看这个接口类吧!(列举下常用的方法供参考)转载 2020-08-12 09:21:48 · 715 阅读 · 0 评论 -
微服务技术系列教程(47)-SpringBoot多配置文件总结
SpringBoot默认加载的是application.yml文件,如果想要引入其它配置的yml文件,就要在application.yml中激活。01 application.yml与bootstrap.yml的区别bootstrap.yml 和 application.yml 都可以用来配置参数。bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。(例原创 2020-07-20 18:06:21 · 1638 阅读 · 0 评论 -
微服务技术系列教程(46)-SpringBoot整合MongoDB(文章评论案例)
01 引言本文的代码已上传至Github,有兴趣的同学可以Clone下来看看https://github.com/ylw-github/SpringBoot-Mongo-Demo.git本文主要讲解在SpringBoot下整合MongoDB,实现文章评论的“增”、“删”、“改”、“查”功能,其中文章评论MongoDB的表结构设计如下:专栏文章评论comment字段名称字段含义字段类型备注_idIDObjectId或StringMongo的主键的字段a原创 2020-07-15 16:13:00 · 851 阅读 · 1 评论 -
微服务技术系列教程(45)-Docker总结
1. 引言Docker在之前的文章有讲到过,有兴趣的同学可以参考下:《Docker专栏》本文来主要重温一下Docker。2. Docker简介Docker官方网址: https://docs.docker.com/ 英文地址Docker中文网址: http://www.docker.org.cn/ 中文地址Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是...原创 2019-12-26 10:01:43 · 589 阅读 · 0 评论 -
微服务技术系列教程(44)- SpringCloud2.x新知识介绍
在之前的博客,我们学的都是SpringCloud1.0 的基础知识,SpringCloud2.x新增了很多知识需要去学习的,如下图:文章就不再详细描述了,可以参考博客:《使用springcloud gateway搭建网关(分流,限流,熔断)》《Nacos初探–作为配置中心》《随行付微服务之配置中心ConfigKeeper》《熔断器Resilience4j》《Sentinel 与 H...原创 2019-12-25 18:12:19 · 508 阅读 · 0 评论 -
微服务技术系列教程(43)- SpringCloud -Zipkin环境集成
1. 引言Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现的。我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时发现系统中出现的延迟过高问题。除了面向开发的 API 接口之外,它还提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如可以...原创 2019-12-25 15:49:51 · 526 阅读 · 0 评论 -
微服务技术系列教程(42)- SpringCloud -Sleuth与Zipkin服务链路
1. 分布式链路监控与追踪产生背景在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案(链路...原创 2019-12-25 15:43:42 · 851 阅读 · 0 评论 -
微服务技术系列教程(41)- SpringCloud -OAuth2搭建微服务开放平台
引言在Spring Cloud需要使用oauth2来实现多个微服务的统一认证授权,通过向OAuth服务发送某个类型的grant type进行集中认证和授权,从而获得access_token,而这个token是受其他微服务信任的,我们在后续的访问可以通过access_token来进行,从而实现了微服务的统一认证授权。客户端根据约定的ClientID、ClientSecret、Scope来从Acc...原创 2019-12-17 16:41:03 · 1009 阅读 · 0 评论 -
微服务技术系列教程(40)- SpringCloud -OAuth2简介&原理
1. 引言在前面《互联网并发与安全专题》中,有讲到过OAuth协议。《互联网并发与安全系列教程(09) -基于AccessToken方式实现API设计》《互联网并发与安全系列教程(11) -OAuth2.0协议实现API设计》2. 开放平台接口开放平台接口一般应用于以下场景:比如腾讯的QQ互联网、微信开放平台、蚂蚁金服开放平台 、微博开放平台,比如实现功能QQ联合登陆、微信扫码登...原创 2019-12-17 15:54:04 · 1527 阅读 · 0 评论 -
微服务技术系列教程(39)- SpringBoot -RBAC权限模型
1. 引言代码和相关的sql脚本已提交至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/SpringBoot-Security-Demo2. RBAC权限模型RBAC权限模型 : 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中...原创 2019-12-17 15:22:06 · 953 阅读 · 0 评论 -
微服务技术系列教程(38)- SpringBoot -整合SpringSecurity
1. 引言代码已提交至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/SpringBoot-Security-Demo上一篇博客《微服务技术系列教程(37)- SpringBoot -SpringSecurity简介》主要讲解了SpringSecurity介绍以及应用场景。本文主要讲解SpringBoot整合SpringSecurity...原创 2019-12-17 14:21:25 · 818 阅读 · 0 评论 -
微服务技术系列教程(37)- SpringBoot -SpringSecurity简介
Spring Security简介Spring Security 一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(控制反转Inversion of Control ),DI(依赖注入Dependency Injection )和AOP(面向切面编程)功能,为应用系统提供声...原创 2019-12-17 11:28:16 · 442 阅读 · 0 评论 -
微服务技术系列教程(36) - SpringCloud-使用Kafka实现消息驱动
引言 在前面的两篇博客《微服务技术系列教程(34) - SpringCloud-使用RabbitMQ实现消息驱动》、《微服务技术系列教程(35) - SpringCloud-消息驱动消费者组的实现》,实现了基于默认的RabbitMQ来实现消息驱动,同时实现了消费者轮询分发的功能。现在有个问题?如果现在不想使用RabbitMQ了,想切换至Kakfa,那么该如何实现呢?其实切换相当简单,基于《微...原创 2019-12-17 11:11:26 · 758 阅读 · 0 评论 -
微服务技术系列教程(35) - SpringCloud-消息驱动消费者组的实现
引言代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Stream-Demo在上一篇博客《微服务技术系列教程(34) - SpringCloud-消息驱动实现(RabbitMQ)》,讲解了简单的SpringCloud消息驱动模式,使用默认消息中间件RabbitMQ实现生产者发送消息到消费者。但是有一个...原创 2019-12-17 10:50:07 · 512 阅读 · 0 评论 -
微服务技术系列教程(34) - SpringCloud-使用RabbitMQ实现消息驱动
1. 引言代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Stream-Demo在上一篇博客《微服务技术系列教程(33) - SpringCloud-消息驱动简介&原理》,我们了解到了SpringCloud消息驱动概念以及绑定器原理。本文使用默认的RabbitMQ来实现,加深理解。2.消息...原创 2019-12-17 10:14:32 · 477 阅读 · 0 评论 -
微服务技术系列教程(33) - SpringCloud-消息驱动简介&原理
1. 消息驱动SpringCloud Stream消息驱动可以简化开发人员对消息中间件的使用复杂度,让系统开发人员更多尽力专注与核心业务逻辑的开发。SpringCloud Stream基于SpringBoot实现,自动配置化的功能可以帮助我们快速上手学习,类似与我们之前学习的orm框架,可以平滑的切换多种不同的数据库。目前SpringCloud Stream 目前只支持 rabbitMQ和ka...原创 2019-12-17 09:36:45 · 470 阅读 · 0 评论 -
微服务技术系列教程(32) - SpringCloud-消息总线
引言之前有写过SpringCloud分布式配置中心的博客《微服务技术系列教程(24) - SpringCloud- 分布式配置中心》,主要讲解并实现了SpringCloud是如何在不启动服务器的情况下刷新配置文件,其原理图如下:但是微服务里面有很多个ConfigClient的,如果一个全局配置文件修改了,那么每个CofingClient微服务都要主动去请求。想想,有没有一种方法可以可以只通...原创 2019-12-16 20:28:51 · 509 阅读 · 0 评论 -
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
Dubbo原理分析角色区分:Provider: 暴露服务的服务提供方(生产者)。Consumer: 调用远程服务的服务消费方(消费者)。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次数和调用时间的监控中心。调用流程:服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅...原创 2019-12-05 20:16:50 · 520 阅读 · 0 评论 -
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
为什么放弃Dubbo 使用SpringCloud?相同点:SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。不同点:SpringCloud是一套目前比较全的网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon ,客户端调用工具Rest和Feign,分布式配置中心Config,服务保护Hystrix,网关Zuu...原创 2019-12-05 19:28:11 · 480 阅读 · 0 评论 -
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
引言之前在《分布式电商项目》里有讲过Dubbo,本文大致的介绍下Dubbo。《分布式电商项目 - Dubbox 简介》《分布式电商项目 - 注册中心 Zookeeper》《分布式电商项目 - Dubbox 本地 JAR 包部署与安装》《分布式电商项目 - 管理中心的部署》之前写过的文章也可以不看,直接往下看,下面也将会讲到。 1. DubboDubbox 是一个分布式服务框架,...原创 2019-12-04 18:22:15 · 473 阅读 · 0 评论 -
微服务技术系列教程(28) - SpringCloud- 分布式服务跟踪Sleuth
随着分布式系统越来越复杂,你的一个请求发过发过去,各个微服务之间的跳转,有可能某个请求某一天压力太大了,一个请求过去没响应,一个请求下去依赖了三四个服务,但是你去不知道哪一个服务出来问题,这时候我是不是需要对微服务进行追踪呀?监控一个请求的发起,从服务之间传递之间的过程,我最好记录一下,记录每一个的耗时多久,一旦出了问题,我们就可以针对性的进行优化,是要增加节点,减轻压力,还是服务继续拆分,让逻...原创 2019-12-04 13:57:07 · 357 阅读 · 0 评论 -
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
引言代码已上传至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Zuul-Demo上两篇文章讲了Zuul以及Swagger相关的概念:《微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul》《微服务技术系列教程(26) - SpringCloud- 接口管理Swagger》本文...原创 2019-12-04 12:36:56 · 526 阅读 · 0 评论 -
微服务技术系列教程(26) - SpringCloud- 接口管理Swagger
引言代码已提交到Github,有兴趣的同学可以看看:https://github.com/ylw-github/SpringCloud-Zuul-Demo/tree/master/repository/Swagger-Demo随着微服务架构体系的发展和应用, 为了前后端能够更好的集成与对接,同时为了项目的方便交付,每个项目都需要提供相应的API文档。提供的对象有: PC端、微信端、H5端...原创 2019-12-04 10:57:02 · 785 阅读 · 0 评论 -
微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul
引言代码已提交至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/SpringCloud-Zuul-Demo之前也写过关于Zuul网关的文章,有兴趣的同学可以参考:《基于Nginx实现API网关》《基于Zuul实现API网关》先来理解几个概念:网关的作用:可以实现负载均衡、路由转发、日志、权限控制、监控等。网关与过滤...原创 2019-12-03 20:29:57 · 720 阅读 · 0 评论 -
微服务技术系列教程(24) - SpringCloud- 分布式配置中心
引言代码已上传至Github:有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-DynamicConfig-Demo本文目录结构:l____引言l____ 1. 常用的分布式配置中心l____2. SpringCloud Config 原理l____3. SpringCloud Config 集成l________3...原创 2019-12-03 17:18:58 · 488 阅读 · 0 评论 -
微服务技术系列教程(23) - SpringCloud- 声明式服务调用Feign
Feign客户端是一个web声明式http远程调用工具,提供了接口和注解方式进行调用。它是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。...原创 2019-12-03 10:41:23 · 431 阅读 · 0 评论 -
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
01 微服务高可用技术对于Hystrixx相关的内容,在前面《互联网并发与安全专题》有提及过,有兴趣的同学可以去参考下:《基于Hystrix实现服务隔离与降级》《服务限流》《RateLimiter使用AOP方式实现限流》 1.1 服务高可用手段大型复杂的分布式系统中,高可用相关的技术架构非常重要。高可用架构非常重要的一个环节,就是如何将分布式系统中的各个服务打造成高可用的服务,...原创 2019-12-02 16:57:41 · 477 阅读 · 0 评论 -
微服务技术系列教程(21) - SpringCloud- 负载均衡器Ribbon
引言在SpringCloud中Ribbon负载均衡客户端,会从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地,然后在本地实现轮训负载均衡策略。那么Ribbon和Nginx有什么区别呢?Nginx是客户端所有请求统一交给Nginx,由nginx进行实现负载均衡请求转发,属于服务器端负载均衡(服务器端转发)。在客户端转发:Ribbon是从eureka注册中心服务器端上获取服...原创 2019-12-02 11:37:36 · 552 阅读 · 0 评论 -
微服务技术系列教程(20) - SpringCloud- 服务治理Eureka(替代方案)
是否曾想过,假如有一天Eureka注册中心闭源了,除了Eureka外,还有其它注册中心可以替代吗?我们知道注册中心不止它一个,还有Consul和Zookeeper,下面来简单介绍下。 1. 使用Consul来替换EurekaConsul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。它具有很多优点:基于 raft 协议,比较简洁;支持健康检查,...原创 2019-11-30 17:10:56 · 958 阅读 · 0 评论 -
微服务技术系列教程(19) - SpringCloud- 服务治理Eureka(详解)
Eureka使用的是服务消费模式以及服务注册模式,本文来详细讲解。1. 服务消费者模式Eureka使用的是服务消费者模式。获取服务:消费者启动的时候,使用服务别名,会发送一个rest请求到服务注册中心获取对应的服务信息,然后会缓存到本地jvm客户端中,同时客户端每隔30秒从服务器上更新一次。可以通过 fetch-inte vall-seconds=30参数进行修以通过eureka.cl...原创 2019-11-29 18:28:51 · 496 阅读 · 0 评论 -
微服务技术系列教程(18) - SpringCloud- 服务治理Eureka(集群搭建)
代码已上传到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Eureka-Demo 1. Eureka高可用原理在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式。默认情况下Eureka是让服务注册中心,不注册自己。...原创 2019-11-29 17:58:34 · 510 阅读 · 0 评论 -
微服务技术系列教程(17) - SpringCloud- 服务治理Eureka(搭建注册中心)
代码已上传到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringCloud-Eureka-Demo引言在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自...原创 2019-11-29 17:22:46 · 594 阅读 · 0 评论 -
微服务技术系列教程(16) - SpringCloud -简介
为什么选择SpringCloud?因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题。回忆以前学过的内容:服务治理: 阿里巴巴开源的Dubbo和当当网在其基础上扩展的Dubbox、Eureka、Apache 的Consul等。分布式配置中心: 百度的disconf、Netfix...原创 2019-11-29 16:22:24 · 758 阅读 · 0 评论 -
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
本文将按顺序开始总结式、通俗易懂的讲解互联网网站架构的演变过程:互联网架构演变过程:传统架构 → 分布式架构 → SOA架构 → 微服务架构1. 传统架构传统的SSH架构,分为三层架构 web控制层、业务逻辑层、数据库访问层。传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没有进行拆分,都写同一个项目工程里面,一般是适合于个人或者是小...原创 2019-11-29 16:01:20 · 575 阅读 · 0 评论 -
微服务技术系列教程(14) - SpringBoot - 实现原理
SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件默认集成的是SpringMVC框架。核心原理:基于SpringMVC无配置文件(纯Java)完全注解化+内置tomcat-embed-core实现SpringBoot框架,Main函数启动。SpringBo...原创 2019-11-11 11:25:35 · 731 阅读 · 0 评论