Spring Cloud
文章平均质量分 71
lang20150928
stay hungry stay foolish
展开
-
关于分布式微服务中的跨域问题案例
通常来说,解决跨域问题需要在服务上添加几个头信息。最简单的办法是在过滤器中指定*来允许所有的请求。不过这样会有一些限制。原创 2022-08-30 11:41:10 · 110 阅读 · 0 评论 -
ParameterizedTypeReference使用
They also enable RestTemplate to read an HTTP response to a generic type (e.g. List), using a ParameterizedTypeReference, a new class that enables capturing and passing generic type info.原创 2022-08-30 10:11:43 · 4412 阅读 · 0 评论 -
为什么要使用微服务
Spring微服务实战为什么要使用微服务我们正处于历史的拐点,现代社会的几乎所有方面都可以通过互联网连接在一起。任何一个公司,都有可能接触到全球的客户,客户的增长同样带来了挑战。这些挑战意味着以下几点正在影响开发人员思考构建应用程序的方式:复杂度上升,高并发与单个数据库通信并且不与其他应用程序集成的孤立程序已经不再是常态,如今,应用程序不仅需要与多个位于公司数据中心内的服务和数据库通信,还要通过互联网与外部服务提供的服务和数据进行通信。客户期望更快速的交付客户不再希望等待软件包的下一次年度发布原创 2021-04-20 20:08:18 · 179 阅读 · 0 评论 -
Spring微服务实战
微服务初探本系列的版本如下所示 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId>原创 2021-04-20 18:39:15 · 94 阅读 · 0 评论 -
微服务初探
什么是微服务 微服务是一个小的、松耦合的分布式服务。微服务允许将一个大型的应用分解为具有严格职责定义的便于管理的组件。在思考微服务时,一个需要信奉的重要概念就是:分解和分离应用程序的功能,使它们完全彼此独立。微服务架构具有以下特征: 应用程序逻辑分解为具有明确定义的职责范围的细粒度组件,这些组件互相协调提供解决方案 微服务利用其小、独立和分布式的性质,使组织拥有明确责任领域的小型开发团队。这些团队可以为同一个目标工作,如交付一个应用程序,但是每个团队只负责他们在做的服务。 每个组件都有一个小的.原创 2021-04-11 21:56:36 · 164 阅读 · 0 评论 -
Spring Cloud项目是如何读取bootstrap.properties文件的?
org.springframework.cloud.bootstrap.BootstrapApplicationListener监听事件 读取配置可以通过设置spring.cloud.bootstrap.enabled为false,不读取bootstrap配置,但是此配置参数必须在当前监听器之前。(默认情况下此配置为true)已经解析过(已经存在名称为bootstrap的MutablePropertySources对象)或者当前正在解析,不需要再进行解析@Overridepublic voi原创 2020-08-03 18:58:23 · 8985 阅读 · 3 评论 -
Spring Cloud Alibaba 学习(2)- Nacos服务注册各个类的初始化过程
紧接上一博客:https://blog.csdn.net/m0_37607945/article/details/106437625从客户端日志中可以看到nacos注册成功,并且从日志可以看出相关类是:com.alibaba.cloud.nacos.registry.NacosServiceRegistry并搜索日志,在对应行打上断点,使用debug模式启动idea.然后依次向下查看栈帧,直到最熟悉的发布ServletWebServerInitializedEvent事件看到这个finis原创 2020-05-30 18:16:16 · 699 阅读 · 0 评论 -
Spring Cloud Alibaba 学习(1)- Nacos服务源码搭建与客户端服务注册
摘自官网:https://spring.io/projects/spring-cloud-alibabaSpring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop原创 2020-05-30 15:05:56 · 1661 阅读 · 0 评论 -
consul配置无法起效问题
当前项目pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven...原创 2020-03-15 15:21:40 · 5231 阅读 · 0 评论 -
12 调用链监控Sleuth(上)
调用链监控原理剖析前面的微服务架构基本都实现了,通过consul实现了服务发现组件和配置服务器,外面的请求通过网关打进来,微服务之间通过轻量级通信机制,包括http和rabbitmq,微服务之间有一定的认证与授权机制,从而保证安全,对于高并发的应用,通过集成Resilience4j,从而提升应用的可用性。但是一直没有探讨,如果应用发现问题,如何快速进行定位问题呢?定位的两点需求:跨微服务...原创 2020-03-11 21:41:55 · 636 阅读 · 0 评论 -
11微服务认证与授权
两大话题用户认证授权有状态&无状态在单体架构的时代,应用常常通过session保持会话,通过将session保存到中央存储中去。常常会使用redis或memcached。在那个年代,要想搭建应用的集群,常常要借用tomcat的session共享插件或者借助sping session这样的小项目把应用的session存储到session store,以及从session store中...原创 2020-02-29 23:39:36 · 1095 阅读 · 0 评论 -
07 声明式http客户端 feign
现有代码存在的问题通过服务发现组件客户端总能找到服务端通过配置服务器管理微服务的配置,让微服务的配置更加简单高效通过ribbon实现客户端的负载均衡分析现有代码存在的问题:UserDTO userDTO = restTemplate.getForObject("http://ms-user/users/{userId}", UserDTO.class, userId);当我是...原创 2020-02-27 19:50:17 · 203 阅读 · 0 评论 -
06 实现负载均衡 ribbon
如何实现负载均衡服务器端负载均衡比如NGINX --> 通过NGINX负载均衡客户端侧负载均衡在课程微服务中获取到所有的用户微服务的所有实例 在课程微服务中提供的算法来使用其中一个用户微服务其中课程微服务相对于用户微服务来说处于客户端测,因此称为客户端侧负载均衡Ribbon & Spring Cloud Loadbalancer对比与选择都是客户端侧负载均衡Ribbo...原创 2020-02-27 19:42:41 · 134 阅读 · 0 评论 -
05 Consul集群搭建
Consul集群搭建知识预热Consul常用命令命令解释示例agent运行一个consul agentconsul agent -devjoin将agent加入到consul集群consul join IPmembers列出consul cluster集群中的membersconsul membersleave将节点移除所在集群cons...原创 2020-02-27 19:35:59 · 146 阅读 · 0 评论 -
04 配置管理
SpringBoot常用配置管理方式之前Consul扮演的是服务发现组件的角色,本章Consul扮演的是配置服务器的角色Spring Boot配置管理与优先级参考Spring说明文档中的 24. Externalized Configuration 一节设置server.port=${SERVER_PORT}java -jar ms-user-0.0.1-SNAPSHOT.jar...原创 2020-02-27 17:20:54 · 202 阅读 · 0 评论 -
03 微服务注册与发现
什么是服务发现?UserDTO userDTO = restTemplate.getForObject("http://localhost:8081/users/{userId}", UserDTO.class, userId);上面的地址被写死 如果地址发生变化 此处地址也需要被修改 而线上环境中地址会频繁发生变化 比方说 微服务部署在docker中,服务器重启,地址一定会发生变化,如果服...原创 2020-02-27 15:28:43 · 198 阅读 · 0 评论 -
01 微服务架构通览
单体应用和微服务什么是单体应用架构?一个归档包(例如war包)包含所有功能的应用程序,我们通常称为单体应用;架构单体应用的方法论,就是单体应用架构。核心思想:一个归档包解决所有问题一个war包包含了用户、选课、课程分类等模块,使用一个数据库单体架构缺点:部署慢、部署频率低无法按需扩展 例如课程分类是IO密集型的业务 当需要扩展时 会需要整体迁移扩展阻碍技术创新 用户模块想从str...原创 2020-02-27 15:13:02 · 231 阅读 · 0 评论 -
09 消息驱动的微服务Spring Cloud Stream
基于MQ的通信流程课程微服务-----------》MQ-----------》用户微服务在LessonService类中考虑使用MQ来实现用户微服务的扣减金额接口,当然也可以使用feign来实现,实际项目中一定要考虑具体的场景。这里仅仅是为了讲解MQ。MQ适用场景异步处理(耗时不阻塞主流程的服务)流量削峰填谷解耦服务间的依赖关系合理的使用MQ,提高服务的吞吐量,提高...原创 2020-02-24 13:59:15 · 234 阅读 · 0 评论 -
过滤器工厂详解
过滤器工厂详解TIPS本文基于 Spring Cloud Hoxton M2 ,理论支持 Spring Cloud Greenwich ,其中的新特性标注出来了。这一节来探讨Spring Cloud Gateway内置的Filter工厂。技巧断点打在 org.springframework.cloud.gateway.filter.NettyRoutingFilter#filter ,...原创 2020-02-26 17:31:54 · 414 阅读 · 0 评论 -
全局过滤器
全局过滤器TIPS本文基于Spring Cloud Gateway Hoxton M3,理论适配Spring Cloud Gateway以及更高版本。本文详细探讨Spring Cloud Gateway内置的全局过滤器。GlobalFilter 接口和 GatewayFilter 有一样的接口定义,只不过, GlobalFilter 会作用于所有路由。TIPS官方声明:GlobalFi...原创 2020-02-26 17:35:33 · 364 阅读 · 0 评论 -
10 API网关-Spring Cloud GateWay
使用网关的必须性简单总结:服务发现让服务消费者总能找到服务提供者配置服务器从而高效管理微服务的配置使用Ribbon完成负载均衡使用Feign让远程调用更高有效使用Resilience4j进行服务容错使用Spring Cloud Stream完成MQ通信本章来详细探讨网关可以简单把API网关当做nginx,但是API网关不仅仅只有反向代理的功能,还有很多其他的功能如果微服务架构不...原创 2020-02-26 19:04:22 · 749 阅读 · 0 评论 -
02. SpringCloud介绍
什么是SpringCloud?快速开发分布式应用的工具集https://spring.io/projects/spring-cloudSpring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others.D...原创 2020-02-27 14:38:59 · 171 阅读 · 0 评论 -
08 服务容错-Resilience4j
服务容错和雪崩效应现有架构总结Consul->服务发现与配置管理Ribbon->负载均衡Feign->代码优雅本章目标高并发 -》 服务容错?雪崩效应比如存在C->B->A三个微服务,某个时刻微服务A在高并发场景下崩溃,那么微服务B对A的请求就会等待,在java中,每个请求都是一个线程,服务等待,就会导致线程阻塞,直到超时之后才会释放,当在高并发情况下...原创 2020-02-24 18:31:56 · 741 阅读 · 0 评论 -
路由谓词工厂详解
路由谓词工厂详解TIPS本文基于Spring Cloud Hoxton M2编写,兼容Spring Cloud Finchley及更高版本。这一节来详细探讨Spring Cloud Gateway的路由谓词工厂 (Route Predicate Factories),路由谓词工厂的作用是:符合Predicate的条件,就使用该路由的配置,否则就不管。 只要掌握这一句,掌握路由谓词工厂就比较轻...原创 2020-02-27 15:14:46 · 382 阅读 · 0 评论