Java后端架构开荒实战(一)——基础设施
一、前言
之前的文章有讲过后端架构演进系列,这个系列文章还是以一个经典的电商系统为例子,来讲讲Robben是如何在实际开发中一步一步打造出一个大型的后端架构的。本系列文章更多的一些实践操作方面的操作和选型。
工欲善其事,必先利其器。在业务代码开发前,让我们先做好相关的基础设置建设。
二、云平台
云服务的选择有阿里云、腾讯云、华为云等等。阿里云是老牌云服务商了,产品配套齐全,文档丰富,价格也是相应的贵一点。腾讯云算是后起之秀,有腾讯背书,价格比阿里云便宜点。华为云没用过就不评价。
运行环境可以选择jar包直接运行在Linux环境上,也可以选择使用Kubernets进行部署。
我们这里云服务商选择腾讯云,然后平台选择Kubernetes去管理我们整个后端应用周期。
三、代码管理
关于Git和Svn现在基本都是选择Git了吧。可以使用私有的GitLab,或者使用云服务的Git仓库也是一个不错的选择。大部分公司为了代码安全考虑会选择自建仓库。
自建GitLab参考: TKE容器集群中部署GitLab服务器
云服务腾讯云coding:
本系列文章使用coding的代码仓库来管理。
四、文件服务
这里把文件服务单独拎出来,因为文件存储的安全和维护是比较重要和独立的。
自建分布式文件服务fastdfs
fastdfs是开源的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。一般用在图片和音频这种中小文件存储,有自建需求的团队可以考虑。
使用云服务商提供的文件服务
这种就没什么好说的,像阿里云OSS,七牛云等等都可以。
综合成本使用考虑本系列文章使用七牛云的文件服务。
五、统一依赖管理Maven
随着依赖的不断增多,内部服务的不断产生。统一的版本管理就显得十分重要。
Maven私服
用来统一管理依赖和内部二方库。可以选择自建,也可以用云服务的。
自建Nexus: 省略了,网上一搜以大把。
云服务:Coding的制品库管理。
maven setting中指定
<profile>
<id>robbendev-robbendev-robbendev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>robbendev-robbendev-robbendev</id>
<name>robbendev</name>
<url>https://robbendev-maven.pkg.coding.net/repository/robbendev/robbendev/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
统一依赖项目
统一依赖项目结构
robbendev-maven
├── pom.xml
├── robbendev-bom
│ ├── pom.xml
├── robbendev-dependencies
│ ├── pom.xml
└── robbendev-parent
├── pom.xml
看下具体代码
robbendev.maven/pom.xml主要是配置私服的地址
<groupId>com.robbendev</groupId>
<artifactId>robbendev-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>robbendev-bom</module>
<module>robbendev-dependencies</module>
<module>robbendev-parent</