微服务构建
文章平均质量分 87
微服务构建基础
吴声子夜歌
个人学习记录
展开
-
Zuul过滤器详解
Zuul过滤器在Spring Cloud Zuul中实现的过滤器必须包含4个基本特征:过滤类型、执行顺序、执行条件、具体操作。这些元素看起来非常熟悉,实际上它就是ZuulFilter接口中定义的4个抽象方法:abstract public String filterType();abstract public int filterOrder();boolean shouldFilter();Object run();filterType:该函数需要返回一个字符串来代表过滤器的类型,而这原创 2020-05-29 22:32:28 · 975 阅读 · 0 评论 -
OAuth2和JWT案例
案例分析在本案例中有3个工程,分别为 eureka- server、auth- service和user- service其中auth- service和 user-service向 eureka- server注册服务。auth- service负责授权,授权需要用户提供客户端的clientId和 password,以及授权用户的 username和 password这些信息准备无误之后,auth- - service返回JWT,该JWT包含了用户的基本信息和权限点信息,并通过RSA加密。 user-s原创 2020-05-26 17:51:40 · 630 阅读 · 0 评论 -
SpringCloudOAuth2案例
案例分析首先来看案例的架构设计,在这个案例中有3个工程,分别是服务注册中心工程eureka-server、授权中心Uaa工程auth-service和资源工程service-hi,如图:首先,浏览器向auth-service 服务器提供客户端信息、用户名和密码,请求获取Token。auth-service确认这些信息无误后,根据该用户的信息生成Token并返回给浏览器。浏览器在以后的每次请求都需要携带Token给资源服务service-hi,资源服务器获取到请求携带的Token后,通过远程调度将Tok原创 2020-05-26 00:04:00 · 760 阅读 · 0 评论 -
SpringCloudOAuth2--概述
什么是OAuth20Auth2是一个标准的授权协议。OAuth2 取代了在2006年创建的OAuth1 的工作,OAuth2对OAuth1没有做兼容,即完全废弃了0Auth1。0Auth2 允许不同的客户端通过认证和授权的形式来访问被其保护起来的资源。在认证和授权的过程中,主要包含以下3种角色。服务提供方Authorization Server资源持有者Resource Server客户端ClientOAuth2的认证流程图如下:用户(资源持有者)打开客户端,客户端 客户端询问用户授权。原创 2020-05-24 23:26:17 · 527 阅读 · 0 评论 -
SpringSecurity--简介
什么是Spring SecuritySpring Security是 Spring resource社区的一个安全组件, Spring Security为 JavaEE企业级开发提供了全面的安全防护。安全防护是一个不断变化的目标, Spring Security通过版本不断迭代来实现这一目标。 Spring Security采用“安全层”的概念,使每一层都尽可能安全,连续的安全层可以达到全面的防护。Spring Security可以在 Controller层、 Service层、DAO层等以加注解的方原创 2020-05-24 20:52:52 · 378 阅读 · 0 评论 -
SpringBootAdmin集成Turbine、使用Spring Boot Security添加安全验证
SpringBootAdmin集成TurbineHystrix Dashboard是一个监控熔断器状况的组件,而Turbine是一个可以聚合多个HystrixDashboard的组件。在Spring Boot Admin 中,可以很方便地集成Turbine组件。集成Turbine组件非常简单,只需要引入相关的依赖并做简单的配置即可。首先需要两个Eureka Client 工程,在这两个Eureka Client的工程中实现Hystrix熔断器和Hystrix Dashboard组件。然后,需要一个Tur原创 2020-05-24 01:22:13 · 1137 阅读 · 1 评论 -
微服务监控SpringBootAdmin
SpringBootAdmin微服务监控Spring Boot Admin用于管理和监控一个或 者多个Spring Boot程序。Spring Boot Admin分为Server端和Client端,Client 端可以通过Http 向Server端注册,也可以结合Spring Cloud的服务注册组件Eureka 进行注册。Spring Boot Admin提供了用AngularJs编写的UI界面,用于管理和监控。其中监控内容包括Spring Boot的监控组件Actuator 的各个Http节点,也原创 2020-05-23 22:42:06 · 574 阅读 · 0 评论 -
Spring Cloud Sleuth--服务链路追踪(二)
在链路中添加自定义数据现在需要实现这样一个功能:在链路数据中加上请求的操作人。被案例在geteway-service服务中实现。在gateway-service工程中新建一个ZuulFilter过滤器,它的类型为post类型,order为900,开启拦截。在过滤器的拦截逻辑方法里,通过Tracer 的addTag 方法加上自定义的数据,在本案例中加上了链路的操作人。另外也可以在这个过滤器中获取当前链路的traceld信息,traceld 作为链路数据的唯一标识, 可以存储在log日志中,方便后续查找,本案原创 2020-05-23 17:51:38 · 251 阅读 · 0 评论 -
Spring Cloud Sleuth--服务链路追踪(一)
为什么需要Spring Cloud SleuthSpring Cloud Seleuth是SpringCloud的一个组件,它的主要功能是在分布式系统中提供服务链路追踪解决方案。原创 2020-05-23 14:54:08 · 244 阅读 · 0 评论 -
构建高可用的Config Server、使用Spring Cloud Bus刷新配置
构建高可用的Config Server当服务实例很多时,所有的服务实例需要同时从配置中心Config Server读取配置文件,这时可以考虑将配置中心Config Server做成一个微服务,并且将其集群化,从而达到高可用。配置中心Config Server 高可用的架构图如下图所示。ConfigServer和Config Client向Eureka Server注册,且将Config Server多实例集群部署。构建Eureka Server依赖:<dependencies>原创 2020-05-22 12:15:39 · 215 阅读 · 0 评论 -
SpringCloudConfig--ConfigServer从本地读取配置文件
ConfigServer从本地读取配置文件Config Server可以从本地仓库读取配置文件,也可以从远处Git仓库读取。本地仓库是指将所有的配置文件统一写 在Config Server工程目录下Config Sever暴露Http API接口, ConfigClient通过调用Config Sever的Http API接口来读取配置文件。构建Config Server依赖:<dependencies> <dependency> <groupI原创 2020-05-21 23:19:16 · 3382 阅读 · 0 评论 -
Zuul案例、常见使用方式
搭建Zuul服务依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframe原创 2020-05-21 21:25:34 · 395 阅读 · 0 评论 -
Zuul工作原理
为什么需要ZuulZuul作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下6个方面。Zuul、 Ribbon 以及Eureka相结合,可以实现智能路由和负载均衡的功能,Zuul 能够将请求流量按某种策略分发到集群状态的多个服务实例。网关将所有服务的API接口统一聚合,并统一对外暴露。外界系统调用API接口时,都是由网关对外暴露的API接口,外界系统不需要知道微服务系统中各服务相互调用的复杂性。微服务系统也保护了其内部微服务单元的API接口,防止其被外界直接调用,导致服务的敏感信息对原创 2020-05-21 20:23:13 · 2852 阅读 · 0 评论 -
使用Turbine聚合监控
Turbine概述Turbine真正做的,就是将每一个(指定)服务的Hystrix/stream中的状态信息取出,并集中处理(计算与展示),应该说,它是具有自己独立的调度的,服务(实例)发现,服务连接,数据聚合,数据输出,共四个过程。如上图: Turbine首先通过InstanceDiscovery模块获取所有的实例信息(定期更新获取),ConnectionManager 负责连接到实例,连接上实例后,便会有源源不断的数据流发送给聚合器Aggregator之后,再传送给需要的地方。使用Turbine原创 2020-05-21 19:11:44 · 361 阅读 · 0 评论 -
Feign中使用HttpClient和OKHttp、负载均衡实现
Feign中使用HttpClient和OKHttp在Feign中,Client是一个非常重要的组件,Feign最终发送Request请求以及接收Response响应都是由Client 组件完成的。Client 在Feign源码中是一个接口,在默认的情况下,Client的实现类是Client.Default, Client.Default 是由HttpURLConnnection来实现网络请求的。另外,Client还支持HttpClient和OkhHttp来进行网络请求。首先查看FeignRibbonC原创 2020-05-20 23:42:35 · 2742 阅读 · 0 评论 -
Feign的工作原理
Feign的工作原理Feign是一个伪Java Http 客户端,Feign 不做任何的请求处理。Feign 通过处理注解生成Request模板,从而简化了Http API 的开发。开发人员可以使用注解的方式定制Request API模板。在发送Http Request请求之前,Feign通过处理注解的方式替换掉Request模板中的参数,生成真正的Request,并交给Java Http客户端去处理。利用这种方式,开发者只需要关注Feign注解模板的开发,而不用关注Http请求本身,简化了Http请求原创 2020-05-20 22:23:25 · 5705 阅读 · 0 评论 -
FeignClient详解、配置
FeignClient详解首先查看@FeignClient注解的源码:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface FeignClient { @AliasFor("name") String value() default ""; @Deprecated String serviceId() default ""; @AliasFor("value原创 2020-05-20 21:50:15 · 31741 阅读 · 4 评论 -
Ribbon源码解析
Ribbon源码解析首先,跟踪LoadBalancerClient的源码,它是一个接口类,继承了ServiceInstanceChooser,它的实现类为RibbonLoadBalancClient,它们之间的关系如下图:LoadBalancerClient是一个负载均衡的客户端,有如下3种方法。其中有2个excute(方法,均用来执行请求,reconstructURI()用于 重构Url,代码如下:ServiceInstanceChooser接口有一个方法根据serviceId获取Service原创 2020-05-20 12:23:03 · 291 阅读 · 0 评论 -
Eureka服务注册、服务续约源码解析、为何Eureka获取服务实例这么慢、自我保护模式
Eureka的一些概念Register——服务注册当Eureka Client向Eureka Server注册时,Eureka Client提供自身的元数据,比如IP地址、端口、运行状况指标的Url、主页地址等信息。Renew——服务续约Eureka Client 在默认的情况下会每隔30秒发送一次心跳来进 行服务续约。通过服务续约来告知Eureka Server该Eureka Client仍然可用,没有出现故障。正常情况下,如果Eureka Server在90秒内没有收到Eureka Cl原创 2020-05-19 23:26:31 · 371 阅读 · 0 评论 -
Swagger2注解详细说明
@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置" 示例:@Api(value="用户controller",tags={"用户操作接口"})@RestControllerpublic class UserController {}@ApiOperation:用在请求的方法上,说明方法的用途、作用 value="说明方法的用途、作用" no原创 2020-05-19 00:51:55 · 156 阅读 · 0 评论 -
SpringBoot整合Swagger2--搭建RestfulAPI在线文档
SwaggerSwagger,中文“拽"的意思,它是一个功能强大的在线API文档的框架,目前它的版本为2.x,所以称为Swagger2。Swagger2提供了在线文档的查阅和测试功能。利用Swagger2很容易构建RESTful风格的API,在Spring Boot中集成Swagger2,需要以下几个步骤。1. 依赖<dependency> <groupId>io.springfox</groupId> <artifactId>spri原创 2020-05-19 00:33:53 · 200 阅读 · 0 评论