摘要: 问题描述: 在activemq的监听器中,通过注解@Autowired或@Resource注入bean时,获取到的bean为null。调用该bean的方法时会报空指针异常。 问题原因: 当调用bean内方法时,spring容器中还没有完成对注解bean的扫描,dispatcher.xml中配置的注解 阅读全文
posted @ 2018-07-15 23:27 开发者导航 阅读(2209) 评论(0) 推荐(0)
摘要: 服务提供者 Eureka服务治理体系支持跨平台,虽然我们前文使用了Spring Boot来作为服务提供者,但是对于其他技术平台只要支持Eureka通信机制,一样也是可以作为服务提供者,换句话说,服务提供者既可以是Java写的,也可以是python写的,也可以是js写的。这些服务提供者将自己注册到Eu 阅读全文
posted @ 2018-07-15 23:23 开发者导航 阅读(148) 评论(0) 推荐(0)
摘要: 自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行。 默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例 阅读全文
posted @ 2018-07-15 23:22 开发者导航 阅读(402) 评论(0) 推荐(0)
摘要: Spring Boot的配置参考Spring Boot系列文章,这里只对Spring Cloud用到的配置解释。 spring.application.name:配置应用名称,在注册中心中显示的服务注册名称。 spring.cloud.client.ipAddress:获取客户端的IP地址。 eur 阅读全文
posted @ 2018-07-15 23:22 开发者导航 阅读(321) 评论(0) 推荐(0)
摘要: Spring Cloud Zuul对异常的处理整体来说还是比较方便的,流程也比较清晰,只是由于Spring Cloud发展较快,各个版本之间有差异,导致有的小伙伴在寻找这方面的资料的时候经常云里雾里,本文将以Dalston.SR3版本为例,来说明Spring Cloud Zuul中的异常处理问题。 阅读全文
posted @ 2018-07-15 23:21 开发者导航 阅读(417) 评论(0) 推荐(0)
摘要: 上篇文章我们介绍了API网关的基本构建方式以及请求过滤,小伙伴们对Zuul的作用应该已经有了一个基本的认识,但是对于路由的配置我们只是做了一个简单的介绍,本文我们就来看看路由配置的其他一些细节。 首先我们来回忆一下上篇文章我们配置路由规则的那两行代码: 1 2 zuul.routes.api-a.p 阅读全文
posted @ 2018-07-15 23:20 开发者导航 阅读(486) 评论(0) 推荐(0)
摘要: Spring Cloud中Feign配置详解 到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何配置Ribbon和Hystrix呢?带着这两个问题,我们来看看本文的内容。 Ribbon配置 rib 阅读全文
posted @ 2018-07-15 23:19 开发者导航 阅读(1201) 评论(0) 推荐(1)
摘要: 到目前为止,我们Spring Cloud中的内容已经介绍了很多了,Ribbon、Hystrix、Feign这些知识点大家都耳熟能详了,我们在前文也提到过微服务就是把一个大的项目拆分成很多小的独立模块,然后通过服务治理让这些独立的模块配合工作等。那么大家来想这样两个问题:1.如果我的微服务中有很多个独 阅读全文
posted @ 2018-07-15 23:18 开发者导航 阅读(203) 评论(0) 推荐(0)
摘要: IRule 这是所有负载均衡策略的父接口,里边的核心方法就是choose方法,用来选择一个服务实例。 AbstractLoadBalancerRule AbstractLoadBalancerRule是一个抽象类,里边主要定义了一个ILoadBalancer,就是我们上文所说的负载均衡器,负载均衡器 阅读全文
posted @ 2018-07-15 23:17 开发者导航 阅读(406) 评论(0) 推荐(0)
摘要: 使用Hystrix实现微服务的容错处理 容错机制 如果服务提供者相应非常缓慢,那么消费者对提供者的请求就会被强制等待,知道提供者相应超时。在高负载场景下,如果不作任何处理,此类问题可能会导致服务消费者的资源耗尽甚至整个系统崩溃。 雪崩效应 微服务架构的应用系统通常包含多个服务层,微服务之间通过网络进 阅读全文
posted @ 2018-07-15 23:16 开发者导航 阅读(364) 评论(0) 推荐(0)
摘要: 为什么要使用微服务网关 不同的微服务一般会经过不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。 如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,每个服务都需要独立 阅读全文
posted @ 2018-07-15 23:14 开发者导航 阅读(265) 评论(0) 推荐(0)
摘要: 什么是Feign Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认 阅读全文
posted @ 2018-07-15 23:12 开发者导航 阅读(3840) 评论(0) 推荐(0)
摘要: 无法在任何已知服务器上执行请求。 原因是注册中心未启动。在使用springcloud搭建微服务时,一定要先启动注册中心,再启动服务端和客户端。具体报错如下: com.netflix.discovery.shared.transport.TransportException: Cannot execu 阅读全文
posted @ 2018-07-15 23:11 开发者导航 阅读(452) 评论(0) 推荐(0)
摘要: spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign。 Ribbon是一个基于HTTP和TCP客户端的负载均衡器,类似nginx反向代理,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon(即不用添加ribbon的ja 阅读全文
posted @ 2018-07-15 23:07 开发者导航 阅读(1846) 评论(0) 推荐(0)
摘要: 1、创建服务注册中心 创建一个普通的Spring Boot工程 首先我们需要创建一个普通的Spring Boot工程,命名为eureka-server,普通到什么程度呢?就是一个starter都不需要添加,创建成功之后就只引用了一个父starter。 <parent> <groupId>org.sp 阅读全文
posted @ 2018-07-15 23:04 开发者导航 阅读(11355) 评论(1) 推荐(1)
摘要: Spring Cloud可以增加HTTP Basic认证来增加服务连接的安全性。 1、加入security启动器 在maven配置文件中加入Spring Boot的security启动器。 <dependency> <groupId>org.springframework.boot</groupId 阅读全文
posted @ 2018-07-15 23:02 开发者导航 阅读(801) 评论(0) 推荐(0)
摘要: spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等),@EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netfli 阅读全文
posted @ 2018-07-15 23:01 开发者导航 阅读(185) 评论(0) 推荐(0)
摘要: 方法如下: 1.在pom文件中引入 devtools 依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- optional=tr 阅读全文
posted @ 2018-07-15 23:00 开发者导航 阅读(6538) 评论(0) 推荐(0)
摘要: 为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务又必须集群部署。由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成 阅读全文
posted @ 2018-07-15 22:58 开发者导航 阅读(2221) 评论(0) 推荐(1)
摘要: 服务端负载均衡 负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的负载均衡通常都是指服务端负载均衡,服务端负载均衡又分为两种,一种是硬件负载均衡,还有一种是软件负载均衡。 硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,常见的如F5。 软件 阅读全文
posted @ 2018-07-15 22:57 开发者导航 阅读(299) 评论(0) 推荐(0)
摘要: 我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心。 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这样一旦发生了故障,那么整个服务就会瘫痪,所以我们需要一个高可用的服务注册中心,那么在Eureka中, 阅读全文
posted @ 2018-07-15 22:50 开发者导航 阅读(189) 评论(0) 推荐(0)
摘要: 一.微服务架构 服务提供者、服务消费者、服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。 各个微服务与服务发现组件使用一定机制(例如心跳 阅读全文
posted @ 2018-07-15 22:49 开发者导航 阅读(774) 评论(0) 推荐(0)
摘要: 单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层、数据库访问层、控制层放入在一个项目中。 优点:适合于个人或者小团队开发,不适合大团队开发。 分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程通讯技术。 优点: 1.把模块拆 阅读全文
posted @ 2018-07-15 22:47 开发者导航 阅读(1896) 评论(0) 推荐(0)
摘要: Spring Boot日志框架Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制 阅读全文
posted @ 2018-07-15 22:42 开发者导航 阅读(466) 评论(0) 推荐(0)
摘要: 让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行。可执行jars(有时候被成为胖jars "fat jars")是包含你的编译后的类和你的代码运行所需的依赖jar的存档。 可执行jars和Java: Java没有提供任何标准的加载内嵌jar文件(即jar 阅读全文
posted @ 2018-07-15 16:52 开发者导航 阅读(349) 评论(0) 推荐(0)
摘要: 引入依赖 需要引入Spring Boot的Thymeleaf启动器依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> < 阅读全文
posted @ 2018-07-15 16:47 开发者导航 阅读(742) 评论(2) 推荐(0)
摘要: 如果默认的SpringApplication不符合你的口味,你可以创建一个本地的实例并自定义它。例如,关闭banner你可以这样写: public static void main(String[] args){ SpringApplication app = new SpringApplicati 阅读全文
posted @ 2018-07-15 16:46 开发者导航 阅读(2154) 评论(0) 推荐(0)
摘要: 1、在src/main/resources/目录下新建mybatis文件夹,将xxx.xml文件放入该文件夹内 2、在application.yml文件中配置: mybatis: configuration: mapUnderscoreToCamelCase: true mapperLocation 阅读全文
posted @ 2018-07-15 16:44 开发者导航 阅读(4957) 评论(0) 推荐(0)
摘要: 很多Spring Boot开发者总是使用@Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。 由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的@SpringBo 阅读全文
posted @ 2018-07-15 16:43 开发者导航 阅读(271) 评论(0) 推荐(0)
摘要: 在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率。今天我们来探讨下spring是如何完成这个功能的。 1、spring 在扫描bean的时候会扫描方法上是否包含@async的注解,如果包含的,spring会为这个bean动态的生成一个子 阅读全文
posted @ 2018-07-15 16:38 开发者导航 阅读(913) 评论(0) 推荐(0)
摘要: 昨天在腾讯课堂看springboot的视频,老师随口提问,尼玛竟然回答错了。特此记录! 问题: Spring web项目如果程序启动时出现异常,调用的是aop中哪类通知? 正确答案是: 异常返回通知。 回答问题的关键是,你得知道aop有哪几种通知类型吧! spring aop通知(advice)分成 阅读全文
posted @ 2018-07-15 16:36 开发者导航 阅读(5247) 评论(0) 推荐(0)