摘要: 在微服务架构中客户端负载均衡和断路器保护,作为基础工具类框架广泛的应用在各个微服务的实现中,不仅包括我们自身的业务服务类,也包括一些基础设施类微服务,那么是否有更高层次的封装来整合这两个基础工具以简化开发。 Feign是Netflix开发的声明式、模板化的HTTP客户端,Netflix Feign整 阅读全文
posted @ 2020-01-14 17:46 盲目的拾荒者 阅读(201) 评论(0) 推荐(0) 编辑
摘要: feign中对ribbon的配置 主要是在ribbon-core.jar文件下,com.netflix.client.config包下,其中DefaultClientConfigImpl类为默认配置配置客户端和负载均衡器的最简单方法是符合特定格式的属性:<clientName>.<namespace 阅读全文
posted @ 2020-01-14 17:43 盲目的拾荒者 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: 请求压缩配置 Spring Cloud feign支持对请求与响应进行GZIP压缩,以减少通信中的性能损耗,主要是在spring-cloud-netflix-core.jar文件中. 默认对请求和相应压缩是禁用的,从org.springframework.cloud.netflix.feign.en 阅读全文
posted @ 2020-01-14 17:41 盲目的拾荒者 阅读(2183) 评论(0) 推荐(0) 编辑
摘要: 在没有服务网关时,请求流程图大致如下: ​ 客户端直接与各个微服务通信,会有以下问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,大多数情况下,为了保证对外服务的安全性,我们在服务端实现的微服务接口,往往都会有一定的权限校验机制,比如对 阅读全文
posted @ 2020-01-14 17:24 盲目的拾荒者 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 每个客户端用户请求微服务应用提供的接口时,它们权限往往都有一定的限制,系统并不会将所有的微服务接口都对它们开放。然而服务路由并没有限制权限这样的功能,所有请求被毫无保留的转发到具体应用并返回结果,为了实现对客户端请求的安全校验签名和权限控制,最简单和粗暴的方法就是为每个微服务应用都实现一套用于校验签 阅读全文
posted @ 2020-01-14 17:22 盲目的拾荒者 阅读(628) 评论(0) 推荐(0) 编辑
摘要: pom.xml <!-- LOGGING begin --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</ve 阅读全文
posted @ 2020-01-14 17:20 盲目的拾荒者 阅读(860) 评论(0) 推荐(0) 编辑
摘要: Spring的web MVC框架与其他许多web MVC框架一样,是由请求驱动的,围绕一个中央Servlet设计,它将请求分派给控制器,并提供其他功能促进web应用程序的开发。然而,Spring的DispatcherServlet却做得更多,不仅仅是这一点它与Spring IoC容器完全集成,因此允 阅读全文
posted @ 2020-01-14 17:17 盲目的拾荒者 阅读(447) 评论(0) 推荐(0) 编辑
摘要: Spring Boot在默认情况下提供了一个/error,以合理的方式处理所有错误。它在servlet容器中注册为“全局”错误页面。对于机器客户机(类似ajax),它将生成一个JSON响应,其中包含错误的详细信息、HTTP状态和异常消息。对于浏览器客户端,有一个“whitelabel”错误视图,它以 阅读全文
posted @ 2020-01-14 17:14 盲目的拾荒者 阅读(221) 评论(0) 推荐(0) 编辑
摘要: //FileSystemResource 以文件系统的绝对路径的方式访问静态资源 FileSystemResource file= new FileSystemResource("D:\\home\\xdja\\conf\\edums\\redis.properties"); Properties 阅读全文
posted @ 2020-01-14 17:12 盲目的拾荒者 阅读(787) 评论(0) 推荐(0) 编辑
摘要: 服务路由配置 Spring Cloud Zuul通过与Spring Cloud Eureka的整合,实现了对服务实例的自动化维护. 我们只需要zuul.routes.<route>.path与zuul.routes.<route>.serviceId参数对的方式进行配置 如下: /order-ser 阅读全文
posted @ 2020-01-14 17:11 盲目的拾荒者 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: 对于通过API网关调用文件上传服务来说,文件(1M以内)无须任何处理,即看正常上传。对于大文件(10M以上)上传。需要在上传路径上添加/zuul前缀。也可使用zuul.servlet-path自定义前缀。 文件上传演示 pom.xml <project xmlns="http://maven.apa 阅读全文
posted @ 2020-01-14 17:09 盲目的拾荒者 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 1.利用@ConfigurationProperties获取配置的值,@ConfigurationProperties是springboot提供的基于安全类型的配置放置。 application.properties spring.redis.host=127.0.0.1 spring.redis. 阅读全文
posted @ 2020-01-14 17:03 盲目的拾荒者 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 更多细节见https://blog.csdn.net/niugang0920/article/details/81530492 Spring框架是领先的全栈Java/JEE应用程序框架。它通过使用依赖注入、AOP和可移植的服务抽象来支持轻量级容器和非侵入性编程模型。 NoSQL存储系统为水平可扩展性 阅读全文
posted @ 2020-01-14 17:01 盲目的拾荒者 阅读(358) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息 阅读全文
posted @ 2020-01-14 17:00 盲目的拾荒者 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 要配置自己的数据源,请在配置中定义该类型的@Bean。Spring Boot将在任何需要的地方重用数据源,包括数据库初始化. Spring Boot提供了一个实用工具构建器类DataSourceBuilder,可用于创建一个标准数据源(如果它位于类路径中)。 构建器可以根据类路径中可用的内容检测要使 阅读全文
posted @ 2020-01-14 16:57 盲目的拾荒者 阅读(772) 评论(0) 推荐(0) 编辑
摘要: ​ 默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险 因为微服务本省其实是健康的,此时不应该注销这个微服务 阅读全文
posted @ 2020-01-14 16:52 盲目的拾荒者 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 利用RequestBodyAdvice对HTTP请求参数放入body中的参数进行非法字符过滤。 要求:spring 4.2+ 额外的pom.xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</a 阅读全文
posted @ 2020-01-14 16:49 盲目的拾荒者 阅读(2503) 评论(0) 推荐(0) 编辑
摘要: 前面的博客已经演示无注册中心版,那么Config Server也能以服务的方式注册到服务中心,被其他应用发现并获取配置信息。 服务端配置(Config Server) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x 阅读全文
posted @ 2020-01-14 16:24 盲目的拾荒者 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 最近一直在忙着项目上线,昨天也是很晚下班排查上线问题,还好最后搞定了不然又不知道搞到几点了,下班的时候园区公司的办公楼依旧是通火灯明,可能还有很多程序员在改bug,相比于他们我是庆幸的。打车回房子停电了草草收拾早点休息明天还加班,这一年来大多数时间我都是这样度过的,房子只是睡觉的地方大多数时间都在公 阅读全文
posted @ 2020-01-14 15:55 盲目的拾荒者 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Redis做消息队列罢了。​ 为什么需要消息队列? 当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。比如我们系统中常见的邮件、短信发送,把这些不需要及 阅读全文
posted @ 2020-01-14 15:50 盲目的拾荒者 阅读(582) 评论(0) 推荐(0) 编辑