最全Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务,透彻分 ...

打印 上一主题 下一主题

主题 801|帖子 801|积分 2403

最后

这份清华大牛整理的进大厂必备的redis视频、口试题和技术文档
祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!
感谢大家的支持!!

   本文已被CODING开源项目:【一线大厂Java口试题剖析+核心总结学习条记+最新解说视频+实战项目源码】收录
  需要这份体系化的资料的朋侪,可以点击这里获取
======
微服务不是泥球小单体,而是具备更加清晰职责界限的完整一体的业务功能服务。领域驱动设计的头脑通过Domain的功能域设计,可以把核心功能与支撑功能很好的区分开。而在MVC的设计模式尝尝是把所有的;数据服务、定义的属性类、提供的功能都在一条线上,这样是非常快速的开发方式但在作为服务部署时候却很贫苦。
按照不同的业务场景可能设计出软件在数据库利用上会有单库单表大概分库分表,假如是一个体量足够需要分库分表设计的体系,在扩容时候它是否能满足你的需求包括;

  • 核心盘算不涉及库扩容,但是体系功能都在一起怎么办,已扩容都扩容了很浪费
  • 所有的扩容都涉及到数据库连接数增加,但并不是每个行为都直到达所有库表
  • 持续发展的业务会带来数据激增,将来怎么举行扩展,重新洗数据并不是很好的选择
那么实际开发大泥球架构时,不只是会遇到上面的问题,还可能会遇到工期很赶加个人也不提拔效率,反复交接代码扶不过三代等等,因此我们将服务拆分为独立单体具备此核心域完整功能的体系是非常须要的。
如图,是微服务数据库利用的一种头脑,我们希望路由层从最开始就被执行,用户分群动态扩展

二、案例目的
======
本案例通过利用SpringCloud将我们的服务架构扩展为通过路由调用的微服务

  • 首先通过Eureka作为服务注册与发现中央
  • 然后利用Feign模式作为调用API接口
  • 最后依赖于zuul设置路由转发功能
为了方便测试,本案例会在itstack-demo-ddd-03中建4个工程;itstack-demo-ddd-case{基于DDD的微服务}itstack-demo-ddd-eureka-server{服务注册与发现}itstack-demo-ddd-feign{调用方,通过API接口调用}itstack-demo-ddd-zuul{网关路由组件}
三、开发情况
======

  • jdk1.8
  • springboot 2.0.6.RELEASE 以及SpringCloud相干服务
  • idea + maven
四、代码示例
======
1. itstack-demo-ddd-case | 基于DDD的微服务 {本段代码在上一章节已经演示}
=====================================================
itstack-demo-ddd-case
└── src
├── main
│ ├── java
│ │ └── org.itstack.demo
│ │ ├── application
│ │ │ ├── MallRuleService.java
│ │ │ └── MallTreeService.java
│ │ ├── domain
│ │ │ ├── rule
│ │ │ │ ├── model
│ │ │ │ │ ├── aggregates
│ │ │ │ │ │ └── UserRichInfo.java
│ │ │ │ │ └── vo
│ │ │ │ │ ├── DecisionMatter.java
│ │ │ │ │ ├── EngineResult.java
│ │ │ │ │ ├── TreeNodeInfo.java
│ │ │ │ │ ├── TreeNodeLineInfo.java
│ │ │ │ │ └── UserSchool.java
│ │ │ │ ├── repository
│ │ │ │ │ └── IRuleRepository.java
│ │ │ │ └── service
│ │ │ │ ├── engine
│ │ │ │ │ ├── impl
│ │ │ │ │ └── EngineFilter.java
│ │ │ │ ├── logic
│ │ │ │ │ ├── impl
│ │ │ │ │ └── LogicFilter.java
│ │ │ │ └── MallRuleServiceImpl.java
│ │ │ └── tree
│ │ │ ├── model
│ │ │ │ ├── aggregates
│ │ │ │ │ └── TreeCollect.java
│ │ │ │ └── vo
│ │ │ │ ├── TreeInfo.java
│ │ │ │ └── TreeRulePoint.java
│ │ │ ├── repository
│ │ │ │ └── ITreeRepository.java
│ │ │ └── service
│ │ │ └── MallTreeServiceImpl.java
│ │ ├── infrastructure
│ │ │ ├── common
│ │ │ │ └── Constants.java
│ │ │ ├── dao
│ │ │ │ ├── RuleTreeDao.java
│ │ │ │ ├── RuleTreeNodeDao.java
│ │ │ │ └── RuleTreeNodeLineDao.java
│ │ │ ├── po
│ │ │ │ ├── RuleTree.java
│ │ │ │ ├── RuleTreeConfig.java
│ │ │ │ ├── RuleTreeNode.java
│ │ │ │ └── RuleTreeNodeLine.java
│ │ │ ├── repository
│ │ │ │ ├── cache
│ │ │ │ │ └── RuleCacheRepository.java
│ │ │ │ ├── mysql
│ │ │ │ │ ├── RuleMysqlRepository.java
│ │ │ │ │ └── TreeMysqlRepository.java
│ │ │ │ ├── RuleRepository.java
│ │ │ │ └── TreeRepository.java
│ │ │ └── util
│ │ │ └── CacheUtil.java
│ │ ├── interfaces
│ │ │ ├── dto
│ │ │ │ ├── DecisionMatterDTO.java
│ │ │ │ └── TreeDTO.java
│ │ │ └── DDDController.java
│ │ └── DDDApplication.java
│ └── resources
│ ├── mybatis
│ └── application.yml
└── test
└── java
└── org.itstack.demo.test
└── ApiTest.java
2. itstack-demo-ddd-eureka-server | 服务注册与发现
============================================
itstack-demo-ddd-eureka-server
└── src
├── main
│ ├── java
│ │ └── org.itstack.demo
│ │ └── EurekaServerApplication.java
│ └── resources
│ └── application.yml
└── test
└── java
└── org.itstack.demo.test
└── ApiTest.java
   EurekaServerApplication.java | 启动服务
  @SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run( EurekaServerApplication.class, args );
}
}
   application.yml | 服务配置
  server:
port: 8989
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://                                             e                            u                            r                            e                            k                            a                            .                            i                            n                            s                            t                            a                            n                            c                            e                            .                            h                            o                            s                            t                            n                            a                            m                            e                                  :                              {eureka.instance.hostname}:                  eureka.instance.hostname:{server.port}/eureka/
spring:
application:
name: itstack-demo-ddd-eureka-server
3. itstack-demo-ddd-feign | 调用方,通过API接口调用
==========================================
itstack-demo-ddd-feign
└── src
├── main
│ ├── java
│ │ └── org.itstack.demo
│ │ ├── domain
│ │ │ └── TreeDTO.java
│ │ ├── service
│ │ │ └── MallService.java
│ │ ├── web
│ │ │ └── FeignController.java
│ │ └── FeignApplication.java
│ └── resources
│ └── application.yml
写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为本身想要的与本身所学的匹配不上,这也就意味着本身学得远远不敷。无论是学习还是工作,都应该有主动性,所以假如拥有大厂梦,那么就要本身努力去实现它。
最后祝愿各位身材健康,顺利拿到心仪的offer!
由于文章的篇幅有限,所以这次的蚂蚁金服和京东口试题答案整理在了PDF文档里



   本文已被CODING开源项目:【一线大厂Java口试题剖析+核心总结学习条记+最新解说视频+实战项目源码】收录
  需要这份体系化的资料的朋侪,可以点击这里获取
体健康,顺利拿到心仪的offer!
由于文章的篇幅有限,所以这次的蚂蚁金服和京东口试题答案整理在了PDF文档里
[外链图片转存中…(img-NZtro6CZ-1715569730386)]
[外链图片转存中…(img-EVRI7oC7-1715569730386)]
[外链图片转存中…(img-lvy9MAbC-1715569730386)]
   本文已被CODING开源项目:【一线大厂Java口试题剖析+核心总结学习条记+最新解说视频+实战项目源码】收录
  需要这份体系化的资料的朋侪,可以点击这里获取

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表