领域驱动实战-项目搭建

------------恢复内容开始------------

------------恢复内容开始------------

项目间关系:

接口层(实现)-rpc层(接口)-应用层-领域层-基础层(实体po、dao)

 

数据表关系:(用户、活动、奖品、中奖记录)

实际表:活动配置、策略(策略配置、策略明细)、奖品配置、用户r活动(用户参与活动记录表、用户活动参与次数表)、用户策略计算结果表

 

分库分表策略:(分库分表的种类:分库分表、分库不分表)

 

user_strategy_export:分库分表,水平分库,水平分表

user_take_activity:分库不分表,水平分表

user_take_activity_count:分库不分表,水平分表

 

lottery_01、lottery_02之间相当于是水平分库,这两个库一样;lottery和lottery_01、lottery_02是垂直分库,按照业务将不同表分散在不同的库里面

strategy和strategy_detail之间是垂直分表

 

 领域间关系:

抽奖策略领域:单项概率抽奖和整体概率抽奖,并提供统一的调用方式

抽奖-抽奖算法-仓储

 

奖品发放领域

活动信息领域

 

各种Object,各种o:

PO:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的属性与表字段一一对应。

VO:全称为:Value Object,有的也称为View Object,即值对象或页面对象。一般用于web层向view层封装并提供需要展现的数据。

dubbo的provider放在接口层中?

 

test充当consumer,那consumer应该要依赖interfaces啊

 

springboot-starter-web 用的Logback日志,dubbo-zookeeper用的log4j导致日志冲突,自己排除了好几个包里面的log4j日志才解决了日志冲突

 

springboot-starter版本为2.3.5-RELEASE,mybatis版本为2.1.4,mybatis自己导入了一个springboot2.4.0的包,导致和2.3.5的包冲突,自己把2.3.5改成2.4.0才启动起来。

 

lottery-test 想当于consumer,分布式的,consumer并不需要引入provider即lottery-interfaces,解耦了,所以consumer即lottery-test只需要引入rpc就可以,只需要引入接口就行。consumer引入接口,并没有引入实现类,并不会有问题,因为是分布式调用的远程的provider来实现具体功能的。consumer调用远程服务,那肯定要先启动provider,即lottery-interfaces.

 

lottery-test 找不到2.4.0版本的spring-test,引入了5.3.1版本的spring-test,这样后面会有版本冲突问题吗?

 

单元测试和测试工程不是一个东西吧,把单元测试单独写成一个测试工程不行啊

 

分库分表:通常包含以下四种形式【https://blog.csdn.net/weixin_44062339/article/details/100491744】

垂直分库,垂直分表,水平分库,水平分表

垂直分表:

垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段。

  1. 把不常用的字段单独放在一张表;
  2. 把text,blob等大字段拆分出来放在附表中;
  3. 经常组合查询的列放在一张表中;

垂直分库:

垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。

解决业务层面的耦合,业务清晰

能对不同业务的数据进行分级管理、维护、监控、扩展等

高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈

垂直分库通过将表按业务分类,然后分布在不同数据库,并且可以将这些数据库部署在不同服务器上,从而达到多个服务器共同分摊压力的效果,但是依然没有解决单表数据量过大的问题。

 

水平分库:例如:将店铺ID为单数的和店铺ID为双数的商品信息分别放在两个库中。按照一定规则将数据映射到不同库中。

水平分库是把不同表拆到不同数据库中,它是对数据行的拆分,不影响表结构。

  • 解决了单库大数据,高并发的性能瓶颈。
  • 提高了系统的稳定性及可用性。

稳定性体现在IO冲突减少,锁定减少,可用性指某个库出问题,部分可用.

 

水平分表:按照一定规则将数据映射到一个库的不同表中

水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。

  • 优化单一表数据量过大而产生的性能问题

  • 避免IO争抢并减少锁表的几率

    库内的水平分表,解决了单一表数据量过大的问题,分出来的小表中只包含一部分数据,从而使得单个表的数据量变小,提高检索性能。

 

 

------------恢复内容结束------------

------------恢复内容结束------------

posted @ 2022-03-21 16:49  不是诗人是寂寞的人  阅读(48)  评论(0)    收藏  举报