分布式框架搭建学习

前言:

            之前,其实搭建过一套Eclipese的分布式,但是当初没有写博客,没有记录,现在这次搭建的是Idea的,还是遇到了一些其他的问题,这里记录学习一下。

整体框架:

整体流程是以core为核心模块,middleware为中间模块,记录公共类方法。manage为抽象业务模块,实现日志,权限。business为基础业务模块,主要是基础档案。order,stock,promotion为其他的个性化定制业务模块。

SpringBoot

整个框架的搭建是以SpringBoot为主,idea中创建SpringBoot比较简单

File-> New ->Spring initiailzr

关于主子工程的创建:

在创建完成的主工程上,点击New--> Module 创建子工程,完成后在主的pom.xml中会有显示

整个项目工程图 如下

事实上原本的eclipese中项目工程是这样的,当然 现在idea中 其他几个模块都套在core中

数据库中间介-MyCat

在下载MyCat之前 先需要整合MySQL

这边我用的是MySQL5.7 MyCat1.6.7

MySql的配置 主要是增加了 my.ini

具体如下

发现没有data目录 不要手工创建

启动mysql服务 net start mysql

 MyCat具体配置安装:主要分为3个部分 server.xml   schema.xml   rule.xml 

server.xml  主要配置逻辑数据库的信息,包括用户名、密码、端口等,也是代码中数据库连接的地址

这里有sequnceHandlerType 用于主键自增加策略

schema.xml   主要配置物理数据库的信息,逻辑数据库名称以及表和路由策略之间的关系等

rule.xml  主要配置路由策略、拆分规则等  这边我只用了mod-long策略 将staff 表拆分到 两个节点上

启动MyCat

 

 

然后程序中  的数据库连接  改为8066 那个Mycat的地址就可以了

其他操作不变 

 

Orm框架-MyBatis 

首先是pom.xml中的集成,同时在插件中 我引入了generator自动生成

这是我的generatorConfig.xml比较尴尬的是,跨工程模块之间的生成,貌似有问题,当时直接写死了绝对路径

 注意一下,自动生成Mapper我这边没有带有@Mapper接口,需要手工自己加上,避免后面引用报错

关于Mapper扫描,我这边将mapper接口放入到midderware项目时就无法扫描了,后来在Application类上 增加@MapperScan注解去扫描,就能读取到middleware的mapper接口了

 

在实际工程编写时,当你使用@AutoWired注解时,idea会很贴心的提示你会有多个实现接口,以及没有实现接口。但是我Mybatis本来自己就没有实现接口,他是动态代理加反射,在编译期实现了这个接口的,然后idea它就信息弹出来了,当时我是懵的,但是实际上他自己可以跑,没啥问题

 

RPC框架-Dubbo

dubbo配置主要分为三大类,expose-interface暴露接口,provider服务提供者,cumsumer服务消费者。

需要说明的是,使用dubbo时,bean必须实现序列化,因为他底层是Netty,到时候传输的时候是要序列化的

看一下配置:首先是接口

 然后是实现类:实现类在business模块中

看一下 xml的配置,这是是provider提供暴露接口的具体实现,以及缺省的zookeeper

这个是服务的消费者配置的xml 

 我将两个xml注入到springboot启动的时候

最后的引用如下 引用上下文之后,去get对应的Bean,强转结构后,去调用接口方法

当然作为register的zookeeper我也配置和启用了

 

因为是windows下的单机启动,所以这个真的很简单,就是启用server与client

缓存-Redis 

事实上 不仅仅只是Redis 还用了Spring的EnableCache

第一次插入缓存,第二次读取相同的key缓存可以被命中。在Redis中存储的数据结构如下

然后这里发现了一个贼坑的问题,就是redis序列化对象的时候,一直乱码。网上百度说 因为sprinngBoot版本问题,高版本的需要自己实现编码,代码如下:

 消息队列-RocketMQ

MQ主要是用来发送异步消息的,当然了我本地还是,但是MQ本身是可以搭建集群的,消息堆积处理能力很强。

首先,搭建MQ的时候,最好搭建一个Rocketmq-console控制台,因为这样看真的直观多了

打包完 相应的jar,启动服务后,就能看到相关的信息了

MQ的jar的引用,千万不要把fastJSON给忘记了

看一下程序的处理,我简单的封装了一点 

实际业务代码如下:
 

今天 发现调用MQ发送时一直报10911端口没有,但是我想了半天,我又不用配置这个,为什么非要这么写,后来Debug到底层代码,百度了一下,走了VIP通道,然后VIP通道默认要这个。后来修改了自己的broker的配置文件如下,增加了最后两行

 最后是启用nameServer与broker。

nameServer的启动没啥好说的,就是直接启动,broker的启动的时候,我带上了autoCreateTopicEnable=true

源码地址:

https://github.com/shengjieTang4419/Distributed_CoreProject.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值