前言
最近一段时间重读了java编程思想,把一些东西重新理解记录一遍
目的
整理知识点,方便以后回顾
java后台技术栈
在有docker环境和docker-compose的工具的机器上,快速搭建redis和mangodb的单机服务
由于我在window上安装了docker,具体教程可看**windows上安装docker-ce**,以下命令都是在windows上操作
**使用Sidecar来整合非jvm微服务**这篇文章讲解了非jvm集成到springcloud体系中的方法
需要说明的是上述方法是用Netflix的sidecar,然而它依赖Eureka作为服务发现组件,consul有自己的注册接口
利用consul的http api将nodejs微服务注册到consul中
1.springcloud编写用户微服务
2.springcloud编写电影微服务
3.springcloud集成网关ZUUL
依上面教程,我已经实现了用户,电影微服务以及zuul网关,微服务的设计难点之一在于对原有业务的拆分,
在我看来每个微服务职责要尽可能单一,但是这样同样也带来了一个问题,那就是微服务之间不可避免的一
些交集.例如终端需要查询用户信息和电影信息,这里有两种做法
1.让终端查询用户信息后在查询电影信息
2.网关层查询用户信息和电影信息,聚合后返回给终端
后一种方式显然更好一些,因为他节省了带宽,相较于终端两次请求网关,显然网关两次请求微服务的网络情况更好
利用RXJAVA聚合微服务,这里面其实很多东西可以讨论,关于分布式协议和分布式事务,这次先简单的说明
一下查询聚合,因为查询是幂等操作,不需要事务
Feign是声明式、模板化的HTTP客户端,可以更加快捷优雅的调用HTTP API。在部分场景下和Ribbon类似,都是进行数据的请求处理,但是在请求参数使用实体类的时候显然更加方便,同时还支持安全性、授权控制等。
Feign是集成了Ribbon的,也就是说如果引入了Feign,那么Ribbon的功能也能使用,比如修改负载均衡策略等。
1.springcloud Finchley.SR2版本
2.springboot 版本2.0.6.RELEASE
以consul为服务发现和配置中心的前提下,集成一个针对**springcloud编写用户微服务**的用户消费服务
Routing in an integral part of a microservice architecture. For example, / may be mapped to your web application, /api/users is mapped to the user service and /api/shop is mapped to the shop service. Zuul is a JVM based router and server side load balancer by Netflix.
路由在微服务架构的一个组成部分。 例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并且/api/shop映射到商店服务。 Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。
其功能包括
1 | 验证 |
Zuul的规则引擎允许规则和过滤器基本上用任何JVM语言编写,内置支持Java和Groovy
1.springcloud Finchley.SR2版本
2.springboot 版本2.0.6.RELEASE
以consul为服务发现和配置中心的前提下,集成一个zuul网关服务