架构:第四章:微服务架构下的分布式架构之搭建环境

下面是我要写的一个简单的分布式架构:SpringCloud+SpringBoot+SpringMVC+MyBatis+MySQL

架构图:

架构:第四章:微服务架构下的分布式架构之搭建环境_第1张图片

准备工作:

架构:第四章:微服务架构下的分布式架构之搭建环境_第2张图片

技术选型:

使用SpringMVC进行表述层开发

使用MyBatis进行持久化层开发

使用Spring进行组件整合并管理声明式事务

使用Maven作为依赖管理和构建管理工具

使用BootStrap前端样式框架生成页面效果

使用MD5加密算法对用户密码进行加密

使用SpringMVC异常映射机制进行了异常信息的统一管理

使用MyBatis的PageHelper实现持久化层分页

使用jQuery的Pagination插件在页面上显示分页页码

使用BootStrap的模态框组件显示弹层窗口显示表格或表单等等

使用layer弹层组件显示提示消息

使用jQuery的on()函数给动态生成的元素绑定事件响应函数

使用zTree框架在页面上显示Permission数据的树形结构

通过在数据库中维护父节点id实现Permission数据的树形结构

通过动态查询每个用户已分配的许可菜单实现细粒度权限控制

使用SpringBoot开发各个具体业务模块的微服务工程

使用SpringCloud的Eureka服务作为微服务的注册中心

使用SpringCloud的Feign封装微服务信息,目的是实现像调用本地方法一样调用远程方法

使用RestTemplate将二进制文件数据上传到Provider

使用RestTemplate将二进制文件数据下载到Consumer

使用Activiti作为流程管理框架实现实名认证流程

使用FastDFS作为用户上传文件的远程分布式文件服务器

使用James邮件服务器发送邮件

使用PostMan对Provider提供的服务进行了测试

使用Freemarker作为SpringBoot环境下的视图技术

创建各个项目工程:

创建父工程:CrowdFundingParent

架构:第四章:微服务架构下的分布式架构之搭建环境_第3张图片

创建子工程:ConsumerPortal

架构:第四章:微服务架构下的分布式架构之搭建环境_第4张图片

创建子工程:ConsumerManager

架构:第四章:微服务架构下的分布式架构之搭建环境_第5张图片

其他工程都这样创建

架构:第四章:微服务架构下的分布式架构之搭建环境_第6张图片

子工程的packaging都是jar,所以可以直接finish

在CrowdFundingParent父工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  com
  CrowdFundingParent
  0.0.1-SNAPSHOT
  pom
  
  	
		RegisterCenterEureka
		CommonBean
		CommonUtil
		CommonFeign
		ProviderDatabase
		ProviderActiviti
		ConsumerPortal
		ConsumerManager
	
  
 	
		UTF-8
		1.8
		1.8
		4.12
		1.2.17
	
	
	
		
			
				org.csource
				fastdfs-client-java
				1.27-SNAPSHOT
			
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR1
				pom
				import
			
			
				org.springframework.boot
				spring-boot-dependencies
				1.5.12.RELEASE
				pom
				import
			
			
				mysql
				mysql-connector-java
				5.0.4
			
			
				com.alibaba
				druid
				1.0.31
			
			
				org.mybatis.spring.boot
				mybatis-spring-boot-starter
				1.3.0
			
			
				ch.qos.logback
				logback-core
				1.2.3
			
			
				junit
				junit
				${junit.version}
				test
			
			
				log4j
				log4j
				${log4j.version}
			
			
			
				org.activiti
				activiti-spring-boot-starter-basic
				5.21.0
			
		
	

在ConsumerPortal子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  ConsumerPortal
  
  	
		
			org.csource
			fastdfs-client-java
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.cloud
			spring-cloud-starter-ribbon
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			org.springframework.boot
			spring-boot-starter-freemarker
		
		
			com
			CommonBean
			0.0.1-SNAPSHOT
		
		
			com
			CommonFeign
			0.0.1-SNAPSHOT
		
		
			com
			CommonUtil
			0.0.1-SNAPSHOT
		
	

jar包出错

架构:第四章:微服务架构下的分布式架构之搭建环境_第7张图片

网上解决方案 如果还有问题可能是maven环境配置有问题,或者是父工程没有加版本号

在ConsumerManager子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  ConsumerManager
  
  	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.cloud
			spring-cloud-starter-ribbon
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
        
            org.springframework.boot
            spring-boot-starter-freemarker
        
		
			com
			CommonBean
			0.0.1-SNAPSHOT
		
		
			com
			CommonFeign
			0.0.1-SNAPSHOT
		
		
			com
			CommonUtil
			0.0.1-SNAPSHOT
		

	

在ProviderActiviti子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  ProviderActiviti
  	
		
			mysql
			mysql-connector-java
		
		
			com.alibaba
			druid
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			com
			CommonBean
			0.0.1-SNAPSHOT
		
		
			com
			CommonFeign
			0.0.1-SNAPSHOT
		
		
			com
			CommonUtil
			0.0.1-SNAPSHOT
		
		
		
			org.activiti
			activiti-spring-boot-starter-basic
		
	

在ProviderDatabase子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  ProviderDatabase
  	
		
			mysql
			mysql-connector-java
		
		
			com.alibaba
			druid
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			com
			CommonBean
			0.0.1-SNAPSHOT
		
		
			com
			CommonFeign
			0.0.1-SNAPSHOT
		
		
			com
			CommonUtil
			0.0.1-SNAPSHOT
		
	

在RegisterCenterEureka子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  RegisterCenterEureka
  	
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka-server
		
	

 

在CommonFeign子工程的pom.xml中创建依赖管理和构建管理


  4.0.0
  
    com
    CrowdFundingParent
    0.0.1-SNAPSHOT
  
  CommonFeign
  	
		
		
			org.springframework.cloud
			spring-cloud-starter-feign
		
		
			com
			CommonBean
			0.0.1-SNAPSHOT
		
	

其他工程无依赖管理和构建管理,后期如果需要在加即可

创建各工程主启动类

 

RegisterCenterEureka

@EnableEurekaServer
@SpringBootApplication

ProviderDatabase

@EnableEurekaClient
@MapperScan("com.mapper")
@SpringBootApplication

ProviderActiviti

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication

ConsumerPortal

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication

ConsumerManager

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication

例图:

架构:第四章:微服务架构下的分布式架构之搭建环境_第8张图片

创建各工程yml文件

RegisterCenterEureka

server:
  port: 84
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:84/eureka

ProviderDatabase

server:
  port: 83
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml
  mapper-locations:
  - classpath:mybatis/mapper/*Mapper.xml
  
spring:
  application:
    name: ProviderDatabase
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/atcrowdfunding?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    dbcp2:
      min-idle: 5
      initial-size: 5
      max-total: 5
      max-wait-millis: 200
      
eureka: 
  client: 
    service-url: 
      defaultZone: http://localhost:84/eureka

创建mybatis目录

架构:第四章:微服务架构下的分布式架构之搭建环境_第9张图片

创建mybatis.cfg.xml






    
        
    

ProviderActiviti

server:
  port: 82
  
spring:
  application:
    name: ProviderActiviti
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/atcrowdfunding?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    dbcp2:
      min-idle: 5
      initial-size: 5
      max-total: 5
      max-wait-millis: 200
      
eureka: 
  client: 
    service-url: 
      defaultZone: http://localhost:84/eureka

ConsumerPortal

server:
  port: 80
eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:84/eureka
spring:
  freemarker:
    template-loader-path: classpath:/templates/
    suffix: .page
crowdfunding.tracker.config.location: classpath:/tracker.conf

创建templates目录

创建tracker.conf

tracker_server=192.168.0.100:22122

ConsumerManager

server:
  port: 81
eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:84/eureka
spring:
  freemarker:
    template-loader-path: classpath:/templates/
    suffix: .page

创建templates目录

现在写一个首页显示功能测试一下

显示首页:使用Freemarker作为SpringBoot环境下的视图技术,创建一个index.page,将前端页面摸板的index.html复制j进去

架构:第四章:微服务架构下的分布式架构之搭建环境_第10张图片

修改页面

架构:第四章:微服务架构下的分布式架构之搭建环境_第11张图片

修改后

架构:第四章:微服务架构下的分布式架构之搭建环境_第12张图片

在路径前加/表示在类路径下

修改后

添加静态资源

将下面的复制

架构:第四章:微服务架构下的分布式架构之搭建环境_第13张图片

 在类路径下创建static文件夹,存放静态资源的文件目录必须是static

架构:第四章:微服务架构下的分布式架构之搭建环境_第14张图片

创建ProtalHandler.java

@Controller
public class PortalHandler {

    @RequestMapping("/main")
    public String toIndexPage() {
        return "index";
    }
}

启动工程

先启动注册中心RegisterCenterEureka

架构:第四章:微服务架构下的分布式架构之搭建环境_第15张图片

再启动子项目ConsumerPortal 

架构:第四章:微服务架构下的分布式架构之搭建环境_第16张图片

在浏览器中http://localhost:80/main默认是80端口,所以也可以直接http://localhost/main 

运行的项目yml配置为80所以浏览器使用的端口为80

架构:第四章:微服务架构下的分布式架构之搭建环境_第17张图片

这个时候页面就出来了。

数据库中创建库和表

CREATE DATABASE atcrowdfunding;
USE atcrowdfunding;
CREATE TABLE `t_member` (
  `member_id` INT(11) NOT NULL AUTO_INCREMENT,
  `login_acc` VARCHAR(100) DEFAULT NULL,
  `login_pwd` VARCHAR(100) DEFAULT NULL,
  `nick_name` VARCHAR(100) DEFAULT NULL,
  `real_name` VARCHAR(100) DEFAULT NULL,
  `card_num` VARCHAR(100) DEFAULT NULL,
  `phone_num` VARCHAR(20) DEFAULT NULL,
  `email_addr` VARCHAR(100) DEFAULT NULL,
  `auth_status` TINYINT(4) DEFAULT NULL,
  `acc_type` TINYINT(4) DEFAULT NULL,
  `company` TINYINT(4) DEFAULT NULL,
  PRIMARY KEY (`member_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

注意:这里只是简单的搭建,要准备的工作就在这,这里把我自己初始的项目分享出来CrowdFundingParent,子工程可以从父工程中导出来。

大家可以用最初的搭建好的项目进行功能编写。

我编写了部分功能:门户:登录与注册,登录后实名认证流程,管理:业务审核中的实名认证审核,业务管理中的流程管理

完成的项目分享CrowdFundingParent。有时间再编写其他功能。

你可能感兴趣的:(架构设计,架构)