技术中台

第一章 dubbo整合nacos搭建项目基本结构

2020-11-07  本文已影响0人  开发小师傅

路漫漫其修远兮,吾将上下而求索

这个商城项目正式开始了,我把这个项目叫启明星(venus),本周开始我每周都会集成一个小功能到项目中,日常会用到的spring-cloud和spring-boot的各类组件,还有一个商城项目应该有的各类接口,包括移动端甚至小程序,相关的方法还有这些年积攒的经验我都会记下来,感兴趣的朋友可以关注后续内容哦。

本节所有代码可以在gitlab上获取,地址:

https://gitlab.com/Flnn/venus.git

一、使用的主要框架以及版本

1. spring-cloud-alibaba 2.2.3.RELEASE

2. spring-cloud Hoxton.SR8

3. dubbo 2.7.8

4. spring-boot 2.2.10.RELEASE

二、注册中心

nacos作为注册中心,我这里就简单使用单节点模式启动了,下载好以后解压,进入bin目录,执行制定的启动命令即可。

nacos官网链接:nacos

下载链接:nacos下载

操作系统不同执行的命令也不一样,windows是:

startup.cmd -m standalone

linux和Mac是:

sh startup.sh -m standalone

非生产环境nacos启动单机模式也就可以了,但是生产上千万不要这样,出于健壮性考虑,生产环境需要配置集群模式。

三、目录结构划分

1、后端的java项目可以简单的分为两类,一类是服务提供者项目,例如venus-product,venus-user,venus-order; 一类是服务消费者项目,例如venus-webapp;dubbo的服务提供者,可以理解为一个个的service项目,而消费者,则是一个个的web-api项目。这样相当于controller和service拆分,两个都可以独立扩展。

2、对于服务提供者,一个项目又包含了5个子项目,每一个项目的含义如下:

这应该是很细的拆分了,消费者或者其他service需要引用本项目的资源的时候,只需要将model和service接口层加入依赖即可。

几个要点

1、spring-boot的项目为什么没有继承spring-boot-parent??

其实继承spring-boot-parent并不是必选的,换一种方式可以达到一样的目的,本项目通过idea建立的时候,因为要规划三个层级的结构,所以只能使用maven最简单的骨架来创建项目,想要让项目达到一样的效果,可以在父项目pom文件中加入以下内容:    

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-dependencies</artifactId>

<version>${spring.boot.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

2、配置profiles

profiles在maven项目的pom文件中定义,然后在application.properties配置的时候使用pom.xml中定义的变量,然后在idea中就可以勾选某个profiles激活。如下图:左边定义profile,右边勾选。

3、日志logback

    spring-boot项目中默认的是logback,本身性能足够优秀,我也就直接使用它了,定义logback的配置文件logback-spring.xml。而我因为可能在windows和Mac上编码,两边日记存储目录不一样,我就使用profile专门做了一个mac的(其实启动的时候加上一个jvm参数制定一下日志文件路径也可以,但是我最不喜欢启动时加jvm参数,所以...)。

    日志配置没什么花头,网上可参考的也很多,具体配置就不赘述了,不过这里面倒是有一个地方值得细讲一下,那就是彩虹日志。不知道大家有没有注意过,如果你没有指定日志配置文件,你的spring-boot项目启动时打印在控制台的日志格式非常好看,还带了不同颜色来区分内容。像下面这样:

这种日志格式看着也舒服啊。怎么实现的呢?

首先在application.properties中加入一行配置:

spring.output.ansi.enabled=always

然后在日志配置文件logback-spring.xml中定义格式,spring-boot内置的输出格式可以直接引入进来。

注意控制太输出格式是${CONSOLE_LOG_PATTERN} ,而输出到文件中的格式是${FILE_LOG_PATTERN},我之前因为文件输出格式也配置了console_log_pattern结果发现文件打开里面会有很多乱码存在,因为这个问题排查了半天。

上一篇 下一篇

猜你喜欢

热点阅读