spring cloud脚手架项目(一)技术选型

本文详细介绍了一个基于SpringCloud和SpringBoot的微服务项目搭建过程,包括技术选型、中间件选择及具体配置,覆盖ORM、服务调用、注册中心、网关、数据库、消息队列、配置中心、非关系型数据库、定时任务、发布运维等关键环节。
摘要由CSDN通过智能技术生成

前言

目前因为有些原因。也是因为自己上一家项目使用了spring cloud的技术栈,所以希望能自己搭建一个spring cloud相关的项目脚手架,也是对之前干的事情的一个总结吧。写一个项目的第一步是需要进行技术选型和中间件选择,下面我会列出我这个项目中需要用到的技术和中间件选择。

基本框架-spring cloud boot

微服务的大旗下面的目前的选择我所熟悉的只有dubbo和spring cloud的,如文章所言,所以我选择的是spring cloud版本,spring cloud和boot之前有一个对应的版本关系
详细Spring Cloud版本与Spring Boot版本适应范围如下
我选择的是spring boot 2.0.3-releas和spring cloud F-relese版本,第一原因是工作中用的也是这个版本,其次是因为版本还算比较新,最新的当然还有G版本和2.1.X版本的boot,不过我认为差别也不多,没有1.5到2.0的变化那么大,小修小补那种,所以这个版本号也是够用的了

orm相关-mybatis、druid、atomikos

这部分需要的就比较多了,得分开来讲。
1.mybatis,目前国内大部分公司用的orm框架,我个人认为是因为mybatis的修改方便,可以直接sql,方便突击修改,有利于国内变化多端的需求。配合使用mybaitsGenerator代码生成器,现在mybatis-plus很流行,不过我个人认为目前对于大部分来说前者也已经足够使用了。mp很好,但是我用不到
2.druid 阿里巴巴的连接池,用过都说好,还自带监控哦
3.pagehelper git上最好用的分页插件之一了。即插即用
4.atomikos,因为我是有多个数据源(mysql),如果数据要求强一致性,那就是只能乖乖XA两段式提交。那spring boot自带整合atomikos,即插即用,也是很方便了

服务调用-feign

配置方便,简单易上手。spring cloud的配套使用组件之一

注册中心-eureka

分布式的微服务少不了注册中心,既然使用了spring cloud,那基本的选择就是eureka了,虽然2.0的难产,但是目前稳定版本的eureka也是足够所有人的使用的了
docker安装eureka

网关-gateway

spring cloud在zuul之后的2.0新网关,用新不用旧。

关系型数据库-mysql

所有项目都需要的一个数据存放位置,如果配置分库分表等方案的话,10亿以下级别的数据都可以通过mysql解决。
选择mysql5.7版本的。首先数据库选择mysql也是因为他是开源和免费的,再其次是因为我从工作以来一直也是用mysql的。mysql的版本目前是5.7的比较稳定好用,也有很多之前5.5和5.6的优化。
docker安装mysql

消息队列(mq)-rockermq

rockermq是阿里推出的消息中心,有很多优点,例如nameserver的元数据存储,broker的消费负载均衡,消息持久化,不丢失,性能强等等。
一般的常用功能:
1.普通mq消息,削峰解耦
2.定时mq消息,用于订单校验等延迟检测解决
3.mq事务消息,分布式事务的解决方案之一
docker 安装rockermq这篇写的不错,我也懒得自己再搭建一个,验证可用

配置中心-nacos

阿里的nacos的功能非常丰富,也可以用spring config和bus,不过个人还是nacos用的顺手,有需求的也可以用携程的apllo
docker搭建nacos

非关系型数据库-redis

系统想要快,那少不了缓存的使用,那目前的选择无非mongodb和redis,前者的数据更加随意,但是后者业界使用更多,也很方便简单,配置布隆过滤器,redisGeo,redis分布式锁等等优秀实现,也是许多业内主流选择。
docker搭建redis

定时任务 -xxl-job

好用的开源分布式定时任务框架

发布运维-jenkins、docker、git、maven

发布6步走
1.git拉取代码
2.maven clean install构建出jar包
3.docker 镜像制作
4.推送到dockerhub仓库
5.docker拉去发布
6.K8S运维管理docker
其中1-5步都可以用jenkins解决,小公司运维神器
docker安装jenkins

最后

看我之前的文章可以看到,都是和docker,linux运维有关的,并不是因为我是运维,而是这些东西可以记录下来,在之后也可以使用,而其他的一些java开发有关的知识,之前感觉自己也太菜了。没有啥输出的东西,写这一系列文章也是希望自己能走出舒适区,好好用心的写一些东西吧。为自己。其实项目的开发进度是快过文章的,因为写代码比写文章快多了。。
github:https://github.com/alex9567/SpringCloudScaffold

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值