美文网首页Java 杂谈一个Java码农眼中的技术世界程序员
使用spring boot全家桶打造微服务基础架构-0【开篇】

使用spring boot全家桶打造微服务基础架构-0【开篇】

作者: 邪影oO | 来源:发表于2018-11-03 17:21 被阅读0次

这篇文章标题最后为什么是" -0" 呢?因为这是一个系列文章,本篇是系列的第一篇. 至于为什么是从0开始,相信会看这篇文章的都是程序猿,所以我就不解释了o(∩_∩)o
由于工作及个人习惯,文章中的所有标点符号都是英文符号,切来切去的也麻烦,见谅

目录

开篇

正文

什么是spring?什么是spring boot?什么是微服务?什么是xxx? 这些概念性的东西就不多说了,大家有兴趣的可以自行搜索.这里就不赘述了.

主要使用的框架组件

  • 核心
    • spring framework
    • spring boot
  • 微服务
    • spring cloud
    • eureka
    • zuul
  • 持久层
    • spring data mongodb
  • 数据库
    • mongodb
  • 安全/认证/权限控制
    • spring security
    • spring security oauth2
    • spring security jwt
  • MQ
    • rocketMQ
  • 定时任务
    • xxl-job
  • 日志纪录/搜索引擎
    • log4j2
    • rocketmq logappender
    • elasticsearch
  • 测试
    • junit5
  • API 文档
    • springfox
  • 缓存
    • redis
  • 系统配制
    • zookeeper
  • 偷懒,少写些重复代码
    • lombok
  • 其他
    • apache commons 系列

上面没列全,只是列出了主要使用的东西,文章的最后会放出完整项目源码.

上列各组件的用途:

spring framework 自然是核心中的核心,现在的java项目,没使用它的都不好意思拿出手

spring boot 用来做各项目模块的启动器,老方便了,开发测试也方便,免得配各种tomcat或者其他web容器.当然它的作用远不止于此,在整个项目过中到处都有它的存在...

微服务我选择了spring cloud,当然 dubbo 也很不错,不过因为一些非技术上的原因,我选择了它, 既然使用了 spring cloud,那么 eureka 肯定是作为服务注册中心的首选.自然 zuul 也是反向代理的首选. zuul 可以自动把注册中心中的所有服务反向代理,当然我们也可以控制哪些代理哪些不代理. 我这里使用 zuul 把一些客户端API服务开放出去

数据库选用了现在比较流行的noSQL 数据库 mongodb, 持久层就选择了 spring data mongodb, 至于连接池什么的,mongodb 的驱动自带了

spring security最为一个安全框架,提供了用户认证,权限控制等全套的安全相关功能, 我这里使用 spring security oauth2 作为客户端 API的用户登录认证, 使用 jwt 作为 token

消息中间件选择了 rocketMQ , 使用它作为服务之间的消息通信,当然我们的日志也是通过它纪录到 elasticsearch 中的. 由于本系列文章是基础架构,使用 elasticsearch 主要是为了纪录日志,并没有作为搜索引擎使用,当然实际业务需要也是没有问题的

日志使用 log4j2 作为真正的日志引擎,日志门面使用 slf4j. 通过rocketmq logappender 以异步的方式把日志发送到rocketMQ.当然还要有专门消费日志的消费者去把日志纪录到 elasticsearch 中

junit作为一个老牌单元测试工具,现在已经出到第五代了

springfox 实际上是 swagger 的java版本,它是第三方的,不是 swagger 的官方版,当然跟spring也没半毛钱关系. 我们的客户端API的文档,还有微服务的接口文档,都靠它来生成了

缓存果断redis,具体业务使用

zookeeper 在此基础架构中作为配制中心使用,当然具体业务中要使用它也没问题

lombok 用来少写一些重复代码(它能帮你自动生成),比如 getter/setter, toString, equals 等. 当然它不是帮你生成代码,它是参与了编译过程,把对应代码的编译结果放在class中了.

apache commons 是目前最常用的通用工具包,例如lang,fileUpload等

工程规划

  • base:作为一个pom工程,负责定义所有用到的包的版本(当然大部分的版本交给spring boot来控制,只定义它里面没有的)和所有工程都用的的包的定义
  • spring boot base:作为一个pom工程,定义spring boot项目需用的的包, maven plugin等(因为项目中还有非spring boot工程,这些工程将直接使用 base项目作为父工程
  • service base: 作为一个pom工程,定义service用到的组件,service是作为spring cloud提供者的工程,包含mongodb的持久层和业务的封装
  • webAPI base : 作为一个pom工程,定义 webAPI用到的组件, webAPI 是给客户端提供接口的,是作为service的消费者和客户端API提供者的工程
  • eureka-server: 服务注册中心
  • zuul-server: 反向代理
  • xxl-job-admin: xxl-job 是一个定时任务的开源项目, xxl-job-admin 是它的管理中心,我们需要它来管理定时任务
  • job-executor-base: xxl-job的执行器的base,作为一个pom工程, 定义定时任务执行器所需要的相关包
  • rocketmq-consumers-base: rocketmq消费者的base,作为一个pom工程,定义rocketmq 消费者需要的相关包
  • authorization-webapi: webAPI base的子项目,作为用户登录认证中心
  • commons: 通用工具项目,以base工程作为父工程
  • service-api: service提供者需要给消费者用到的东西,例如微服务之间传输的Bean(如果数据实体需要传输,那么数据实体也放在这个项目中),spring cloud客户端的定义等.以base工程作为父工程
  • system-log-recorder: 日志的rocketMQ消费者,负责将日志消息消费并纪录到elasticsearch 中
  • service,webapi的demo工程: 可以直接COPY改名后作为真实业务的工程

特别说明

本系列不定期更新,没有规律o(∩_∩)o
之前参加了一个简书活动,获得了发布收费文章的权限,要我一个月内发一篇收费文章.也没闹明白是只能发一篇,还是说一个月内发一篇后就能永久留下这个权限.所以下一篇文章,也就是本系列的第二篇文章我会发个收费文章,价格1块钱.大家放心.本系列只会有一篇收费.

相关文章

网友评论

    本文标题:使用spring boot全家桶打造微服务基础架构-0【开篇】

    本文链接:https://www.haomeiwen.com/subject/dxnbtqtx.html