疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口 】

架构师成长+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战 】


前言

Crazy-SpringCloud 微服务脚手架 &视频介绍

Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架。并配有一系列的使用教程和视频,大致如下:

高并发 环境搭建 图文教程和演示视频,陆续上线:

中间件 链接地址
Linux Redis 安装(带视频) Linux Redis 安装(带视频)
Linux Zookeeper 安装(带视频) Linux Zookeeper 安装, 带视频
Windows Redis 安装(带视频) Windows Redis 安装(带视频)
RabbitMQ 离线安装(带视频) RabbitMQ 离线安装(带视频)
ElasticSearch 安装, 带视频 ElasticSearch 安装, 带视频
Nacos 安装(带视频) Nacos 安装(带视频)

Crazy-SpringCloud 微服务脚手架 图文教程和演示视频,陆续上线:

组件 链接地址
Eureka Eureka 入门,带视频
SpringCloud Config springcloud Config 入门,带视频
spring security spring security 原理+实战
Spring Session SpringSession 独立使用
分布式 session 基础 RedisSession (自定义)
重点: springcloud 开发脚手架 springcloud 开发脚手架
SpingSecurity + SpringSession 死磕 (写作中) SpingSecurity + SpringSession 死磕

小视频以及所需工具的百度网盘链接,请参见 疯狂创客圈 高并发社群 博客

Zuul 微服务统一网关的功能

Zuul的角色是网关,也就是整个分布式微服务集群的流量入口。Zuul负责接收所有的Rest请求,如网页端、APP端等。
Zuul的功能有:
(1)路由:并且将不同的 Rest 请求,转发至不同的微服务提供者(Provider),其作用类似于 Nginx。 同时,也起到了统一端口的作用,将很多的微服务提供者(Provider)的不同的端口,统一到了 Zuul 的服务端口。
(2)认证:网关直接暴露在公网上时,终端要调用某个服务,通常会把登录后的token传过来,网关层对token令牌进行有效性验证,如果token令牌无效(或没令牌),则不允许访问Rest 服务。可以结合 Spring Security中的认证机制,完成 Zuul 网关的安全认证。。
(3)限流:高并发场景下,瞬时流量不可预估,为了保证服务对外的稳定性,限流成为每个应用必备的一道安全防火墙,如果没有这道安全防火墙,请求的流量超过服务的负载能力,很容易造成整个服务的瘫痪。Zuul 使用 ZuulFilter 过滤器集成 RateLimiter 限流组件,可以基于Redis实现了分布式限流的功能。

开启Zuul网关服务

Zuul 做为网关层,自身也是一个微服务,跟其它服务提供者一样,都注册在Eureka Server上,可以相互发现,Zuul能感知到哪些服务提供在线,同时通过配置路由规则,可以将Rest请求自动转发到指定的后端微服务上。
新建 Zuul 网关服务项目的时候,需要在启动类中添加注解@EnableZuulProxy ,声明这是一个网关服务提供者。当然也需要在pom.xml文件中手动添加上如下依赖。

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>

启动类的代码如下:

package com.crazymaker.springcloud.cloud.center.zuul;
//...@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
@SpringBootApplication(scanBasePackages ={"com.crazymaker.springcloud.cloud.center.zuul","com.crazymaker.springcloud.standard","com.crazymaker.springcloud.user.info.contract"})
@EnableScheduling
@EnableHystrix
@EnableDiscoveryClient
//开启网关服务
@EnableZuulProxy
@EnableCircuitBreaker
public class ZuulServerApplication {public static void main(String[] args) {SpringApplication.run(ZuulServerApplication.class, args);}
}

配置Zuul网关路由规则

以下是 Crazy-SpringCloud 微服务脚手架中的 Zuul 网关的路由规则配置:

#服务网关配置
zuul:ribbonIsolationStrategy: THREADhost:connect-timeout-millis: 600000socket-timeout-millis: 600000#路由规则routes:seckill-provider:path: /seckill-provider/**serviceId: seckill-providermessage-provider:path: /message-provider/**serviceId: message-provideruser-provider:path: /user-provider/**serviceId: user-providerurlDemo:path: /demo-provider/**url: http://127.0.0.1/demo-provider

以上示例中,使用了两种路由的方式:(1) 路由到直接URL;(2) 路由到微服务提供者。
先看第一种方式:路由到直接URL
比如在上述代码中,有一条叫做 urlDemo 的路由规则,该规则将匹配 /demo-provider/** 的所有URL请求,直接路由到 http://127.0.0.1/demo-provider/** 的直接地址。
再看第二种方式:路由到微服务提供者
比如在上述代码中,有一条叫做 user-provider 的路由规则,该规则将匹配 /user-provider /** 的所有URL请求,直接路由到名字叫做 user-provider 的某个微服务提供者。
两种方式的区别
(1)第二种方式,使用 serviceId 来指定服务提供者的名称;而第一种方式,使用url 来指定直接的目的 url 前缀。
(2)第二种方式,需要结合 Eureka Client 来实现动态的路由转发功能。启动类需要加上注解 @EnableDiscoveryClient。其实可以不加,因为 @EnableZuulProxy 已经自带了。另外,配置文件中增加 Eureka Client 客户端的相关配置,大致如下:

eureka:client:serviceUrl:defaultZone: http://${EUREKA_ZONE_HOST:localhost}:7777/eureka/instance:prefer-ip-address: true  #访问路径可以显示IP地址instance-id: ${spring.cloud.client.ip-address}:${server.port}ip-address: ${spring.cloud.client.ip-address}

部署和视频

首先需要本地测试通过。

(1)打包:

maven 打包工具。

(2)部署:

部署到linux服务器,解压缩,然后 start.sh 脚本启动。

(3) 访问

http://192.168.233.128:7799/

(4) 视频示意(具体视频,请参见 博客园总入口 )

具体,请关注 Java 高并发研习社群 【博客园 总入口 】


最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群 【博客园 总入口 】

疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战》


疯狂创客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战
  • Netty 源码、原理、JAVA NIO 原理

  • Java 面试题 一网打尽

  • 疯狂创客圈 【 博客园 总入口 】

zuul 详解,带视频相关推荐

  1. IOS视频编辑功能详解下篇-视频裁剪、视频拼接、音视频的处理

    转自:http://www.hudongdong.com/ios/550.html 前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUI ...

  2. Java关键字详解-配视频讲解链接(附带一些面试题)

    Java中常用的关键字详解-配视频讲解链接(附带一些面试题) 关键字:被Java赋予了特定含义的英文单词.关于关键字的学习贯穿了整个Java的学习,结合应用理解记忆关键字,不能单纯的死记硬背,在这里通 ...

  3. 2000坐标系xy坐标几位_详解| 带你认识新一代坐标系——2000国家大地坐标系

    原标题:详解| 带你认识新一代坐标系--2000国家大地坐标系 2018年7月1日起全面使用2000国家大地坐标系的消息,让不少人感慨国之大动作的同时,纷纷摸不着头脑.何为2000国家大地坐标系?对日 ...

  4. FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社

    大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦. <FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社> 京东自营链接:https://item.jd.com/13 ...

  5. 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)[试题学习]

    <汽车理论课后作业matlab编程详解(带注释)[试题学习]>由会员分享,可在线阅读,更多相关<汽车理论课后作业matlab编程详解(带注释)[试题学习](11页珍藏版)>请在 ...

  6. 汽车理论matlab编程,汽车理论课后作业matlab编程详解带注释[10页]

    <汽车理论课后作业matlab编程详解带注释[10页]>由会员分享,可在线阅读,更多相关<汽车理论课后作业matlab编程详解带注释[10页](11页珍藏版)>请在读根文库上搜 ...

  7. 汽车理论课后习题matlab程序,汽车理论课后作业matlab编程详解(带注释).doc

    汽车理论课后作业matlab编程详解(带注释) 1.3matlab程序: (1)%驱动力-行驶阻力平衡图%货车相关参数. m=3880;g=9.8;nmin=600;nmax=4000;G=m*g;i ...

  8. 详解音视频直播平台搭建中的低延时

    详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...

  9. C#调用存储过程详解(带返回值、参数输入输出等)

    C#调用存储过程详解(带返回值.参数输入输出等) 这篇文章主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值.参数输入输出等,需要的朋友可以参考下 本文实 ...

  10. 我的世界服务器雪球菜单无限雪球,我的世界[mcbe雪球菜单详解] 带你做一个完美的雪球带你入门~...

    原标题:我的世界[mcbe雪球菜单详解] 带你做一个完美的雪球带你入门~ 我的世界带你做一个完美的雪球,一起来看看吧~ 今天难得有时间开始给大家做一下这个讲解吧,首先大概说一下,大部分指令都是以直接翻 ...

最新文章

  1. Windows 下连接mysql工具NavicatForMysql
  2. ubuntu下MySQL的安装
  3. arouter跨module传递消息_利用ARouter实现组件间通信,解决子模块调用主模块问题...
  4. 值类型 引用类型 堆栈 堆 之 异想
  5. 换行符‘\n’和回车符‘\r’
  6. 前端html面试题及答案2019,前端面试题及答案2019-20210415034948.docx-原创力文档
  7. 通俗易懂!视觉slam第二部分——salm过程简介
  8. efficientdet-pytorch训练自己的数据集
  9. struct lnode{}Lnode后面的Lnode是什么意思
  10. 计算机管理怎么删除分区,电脑如何删除磁盘分区
  11. 国际象棋渲染测试软件,测试了五款软件八款游戏:AMD三代锐龙YES!但游戏英特尔略胜一筹...
  12. 音视频 开发技术,让智能家居更智能!
  13. 百问网7天物联网智能家居(第七天)
  14. android 华为部分手机剪裁图片模糊问题
  15. Logcat的操作使用方法
  16. mvn No proxy was configured, downloading directly
  17. 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
  18. 关于linux的进程中的各个线程cpu占用情况的分析和查看
  19. 追风筝的人 第八章
  20. 【狗狗分类项目】(3)扩展数据集:斯坦福kaggle数据库

热门文章

  1. 飞桨领航团AI达人创造营课程笔记Lesson_2:数据集的获取与处理(CV方向)
  2. Go 每日一库之 email
  3. 常见英语面试问题及答案
  4. 主从库理论知识-主从同步如何实现?
  5. matlab分析能控条件,基于MATLAB的Luenberger能控规范型的算法及实现
  6. 大量大量大量的代码练习,到底是对还是错?
  7. JS实现简单的网页新闻无缝滚动
  8. 云计算面临的安全威胁,主要来自于哪几个方面?
  9. 翻译python代码的软件_Linux环境下的Python翻译工具源码
  10. 【 西交,西工大,西北大学计算机考研专硕2023详细信息】