通过一张图讨论JAVA入门应掌握什么_nginx

1 Nginx

需掌握:

  • 反向代理
  • 地址重写
  • 按目录划分项目
  • 支持HTTPS

对称加密虽然性能好但有密钥泄漏的风险,非对称加密(2组公钥+2私钥双向传输)安全但性能低下,因此考虑用非对称加密来传输对称加密所需的密钥,然后进行对称加密,但是为了防止非对称过程产生的中间人攻击,需要对服务器公钥和服务器身份进行配对的数字认证,然后引入了CA数字签名+数字证书验证的方式,客户端从认证机构拿到证书私钥,通过证书私钥拿到非对称加密公钥。

  • 解决跨域问题

CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。

参考文章:

  1. Nginx的这些妙用,你肯定有不知道的!
  2. Nginx如何支持HTTPS?手把手教贼简单!

2 Gateway

需掌握:

  • Spring Cloud Zuul
  • Spring Cloud Gateway

参考文章:

  1. Spring Cloud Zuul:API网关服务
  2. Spring Cloud Gateway:新一代API网关服务

3 Spring Security + OAuth2 + JWT

需掌握:

  • Spring Security 和 OAuth2 间的区别

Oauth2是使用第三方认证平台来完成认证和授权,RBAC交给第三方来维护,而Spring Security是自己维护RBAC。

  • Spring Security+JWT实现登录认证
  • Spring Security+Oauth2 实现单点登录

Oauth2包括客户端,认证服务和资源服务

客户端:
注册到认证服务,实时刷新token

认证服务:
验证token合法性,刷新token,验证客户端是否注册过,验证用户名和密码是否正确

资源服务:
自定义用户访问权限,自定义异常,token增强

参考文章:

  1. 仅需四步,整合SpringSecurity+JWT实现登录认证!
  2. 手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!
  3. 使用Redis+AOP优化权限管理功能,这波操作贼爽!
  4. Spring Cloud Security:Oauth2使用入门
  5. Spring Cloud Security:Oauth2结合JWT使用
  6. Spring Cloud Security:Oauth2实现单点登录
  7. 我扒了半天源码,终于找到了Oauth2自定义处理结果的最佳方案!
  8. 听说你的JWT库用起来特别扭,推荐一款贼好用的!

4 Spring Cloud Ribbon

需掌握:

  • 在网关中使用
  • RestTemplate使用Ribbon

参考文章:

  1. Spring Cloud Ribbon:负载均衡的服务调用

5 Spring Cloud Fegin

需掌握:

  • Spring Cloud Fegin

参考文章:

  1. Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

6 服务容错保护

需掌握:

  • Spring Cloud Hystrix
  • Hystrix Dashboard
  • Spring Cloud Alibaba:Sentinel

参考文章:

  1. Spring Cloud Hystrix:服务容错保护
  2. Hystrix Dashboard:断路器执行监控
  3. Spring Cloud Alibaba:Sentinel实现熔断与限流

7 服务注册和发现中心

需掌握:

  • Spring Cloud Eureka
  • Spring Cloud Consul
  • Spring Cloud Alibaba:Nacos

参考文章:

  1. Spring Cloud Eureka:服务注册与发现
  2. Spring Cloud Consul:服务治理与配置中心
  3. Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用

8 服务监控

需掌握:

  • Spring Boot Admin
  • APM

参考文章:

  1. Spring Boot Admin:微服务应用监控
  2. 微服务应用性能如何?APM监控工具来告诉你!

9 配置中心

需掌握:

  • Spring Cloud Config

参考文章:

  1. Spring Cloud Config:外部集中化配置管理

10 分布式请求链路跟踪

需掌握:

  • Spring Cloud Sleuth

参考文章:

  1. Spring Cloud Sleuth:分布式请求链路跟踪

11 消息中间件

需掌握:

  • RabbitMQ
  • Kafka

参考文章:

  1. mall整合RabbitMQ实现延迟消息
  2. 连RabbitMQ的5种核心消息模式都不懂,也敢说自己会用消息队列!
  3. RabbitMQ实现延迟消息居然如此简单,整个插件就完事了!
  4. RabbitMQ实现即时通讯居然如此简单!连后端代码都省得写了?

推荐博客:https://javaguide.cn/high-performance/message-queue/message-queue/

12 分布式缓存

需掌握:

  • Redis
  • Spring data redis
  • Redis集群

参考文章:

  1. mall整合Redis实现缓存功能
  2. Spring Data Redis 最佳实践!
  3. Docker环境下秒建Redis集群,连SpringBoot也整上了!

13 数据库

需掌握:

  • 常用操作
  • 主从同步
  • 读写分离
  • 数据迁移

参考文章:

  1. 开发者必备Mysql命令
  2. MySql主从复制,从原理到实践!
  3. 你还在代码里做读写分离么,试试这个中间件吧!
  4. MySQL如何实时同步数据到ES?试试这款阿里开源的神器!
  5. 数据库迁移搞炸了!没用这款开源神器的锅?

14 日志管理

需掌握:

  • 接口访问日志
  • 日志采集
  • 日志安全
  • 日志汇总
  • 日志服务器搭建

参考文章:

  1. SpringBoot应用中使用AOP记录接口访问日志
  2. SpringBoot应用整合ELK实现日志收集
  3. 性能优越的轻量级日志收集工具,微软、亚马逊都在用!
  4. 你居然还去服务器上捞日志,搭个日志收集系统难道不香么!
  5. 居然有人想白嫖我的日志,赶紧开启安全保护压压惊!
  6. 面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!

15 部署和运维

需掌握:

  • 项目打包成镜像
  • Docker Compose部署镜像
  • Jenkis部署
  • K8S部署

参考文章:

  1. 使用Maven插件为SpringBoot应用构建Docker镜像
  2. 使用Dockerfile为SpringBoot应用构建Docker镜像
  3. 使用Docker Compose部署SpringBoot应用
  4. 使用Jenkins一键打包部署SpringBoot应用,就是这么6!
  5. mall-swarm微服务项目在K8S下的实践!
  6. 我常用的自动化部署技巧,贼好用,推荐给大家!
  7. Docker服务开放了这个端口,服务器分分钟变肉机!
  8. 还在手动部署SpringBoot应用?试试这个自动化插件!
  9. DockerHub访问慢怎么破?自建个企业级镜像仓库试试!

16 文件管理

需掌握:

  • OSS
  • MinIO

参考文章:

  1. mall整合OSS实现文件上传
  2. 前后端分离项目,如何优雅实现文件存储!

17 任务调度

需掌握:

  • SpringTask
  • PowerJob
  • Quartz

参考文章:

  1. mall整合SpringTask实现定时任务
  2. SpringBoot官方支持任务调度框架,轻量级用起来也挺香!
  3. 还在手写任务调度代码?试试这款可视化分布式调度框架!

18 其他中间件

需掌握:

  • MyBatis
  • Swagger-UI
  • Elasticsearch
  • Mongodb
  • Lombok
  • Git

参考文章:

  1. 干掉mapper.xml!MyBatis新特性动态SQL真香!
  2. 解放双手!MyBatis官方代码生成工具给力!
  3. Elasticsearch快速入门,掌握这些刚刚好!
  4. Elasticsearch官方已支持SQL查询,用起来贼方便!
  5. MongoDB快速入门,掌握这些刚刚好!
  6. Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
  7. Github标星34K+Star,这款开源项目助你秒建Git服务!
  8. 10分钟搭建自己的Git仓库
  9. IDEA中的Git操作,看这一篇就够了!

19 一些小插件

  • RestfulToolkit

一套Restful服务开发辅助工具集,提供了项目中的接口概览信息,可以根据URL跳转到对应的接口方法中去,内置了HTTP请求工具,对请求方法做了一些增强功能,总之功能很强大!

  • Grep Console

一款帮你分析控制台日志的插件,可以对不同级别的日志进行不同颜色的高亮显示,还可以用来按关键字搜索日志内容。

  • Maven Helper

解决Maven依赖冲突的好帮手,可以快速查找项目中的依赖冲突,并予以解决!

  • MyBatis Log Plugin

有时候我们需要运行过程中产生的SQL语句来帮助我们排查某些问题,这款插件可以把Mybatis输出的SQL日志还原成完整的SQL语句,就不需要我们去手动转换了。

  • Swagger可以结合postMan使用

AnotherRedisDesktopManager redis操作工具,比RedisDesktopManager好用

  • Arthas

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。它采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。