微服务架构
文章平均质量分 95
barry的异想世界
这个作者很懒,什么都没留下…
展开
-
DDD分层架构最佳实践
还在单体应用的时候就是分层架构一说,我们用得最多的就是三层架构。而现在已经是微服务时代,在微服务架构模型比较常用的有几个,例如:整洁架构,CQRS(命令查询分离)以及六边形架构。每种架构模型都有自己的应用场景,但其核心都是“高内聚低耦合”原则。而运用领域驱动设计(DDD)理念以应对日常加速的业务变化对架构的影响,架构的边界越业越清晰,各施其职,这也符合微服务架构的设计思想。以领域驱动设计(DDD)为理念的分层架构已经成为微服务架构实践的最佳实践方法。一、什么是DDD分层架构1. 传统三层架构要了解DD原创 2021-01-21 09:09:34 · 1133 阅读 · 1 评论 -
SpringCloud 微服务实现数据权限控制
前章讲了如何进行用户权限验证《SpringCloud下的用户鉴权方案》,它是微服务下统一资源访问权限的控制,就像一道墙保护着SpringCloud集群下的各个业务应用服务。而本章要讲的是权限控制的另一个层面数据权限,意思是控制可访问数据资源的数量。举个例子:有一批业务员跟进全国的销售订单。他们被按城市进行划分,一个业务员跟进3个城市的订单,为了保护公司的业务数据不能被所有人都掌握,故每个业务员只能看到自己负责城市的订单数据。所以从系统来讲每个业务员都有访问销售订单的功能,然后再需要配置每个业务员负责的原创 2021-01-11 10:11:05 · 4615 阅读 · 1 评论 -
使用Spring Cloud Stream玩转RabbitMQ,RocketMQ和Kafka
前一章我们讲了《SpringBoot RabbitMQ消息队列的重试、超时、延时、死信队列》,从代码层面引用了非常多的rabbit特征代码,如:rabbitTemplate.convertAndSend(),@RabbitListener(queues = "xxx")等,都是很简单的代码看起来一切都是合理的,但隐约感觉代码遭到了入侵。业务的发展对MQ的依赖越来越重,地位也越来越高,对它的需求也越来越多。比如顺序消费,事务消息,回溯消费等,性能方面也有更高要求。越来越多的趋势提醒我们有更好MQ方案。假如原创 2020-09-27 10:29:27 · 1370 阅读 · 0 评论 -
企业中台化落地:从战略分析到战术实践及架构演进过程
谈及中台,大都雾里看花,抱有一份敬畏之心,恐误导众人。但愿通过自己的思考与一同思考实践的朋友们一些启发,让中台建设得到它应有的收益,总结出更多的成功经验。最近接触到一些公司说在做中台,交流之后大都是应该使用什么样的技术,如何解决数据一致性问题等。其中公司发展时间有长有短,有十几二十年的传统企业,也有三四个月才起步的创业团队。交流下来心中不免有些担忧,不太清楚所谓中台是追求一种技术实现还是一个流行噱头。经过较长时间的思考、学习和实践,我发现了解得越多越不敢讲自己做的称之为中台。它是一种企业级业务构架设.原创 2020-09-13 08:54:58 · 739 阅读 · 0 评论 -
SpringCloud轻松集成Dubbo实现RPC调用
很久之前在做微服务架构选型的时候就听说阿里的微服务RPC框架dubbo,当时与Spring Cloud以http协议调用的架构做对比。发现dubbo的rpc框架学习成本较高,代码入侵性强,本身生态不完整,需要整合多个外部组件,故选择了相对性能弱一点的Spring Cloud全家桶。直到Spring Cloud Alibaba的出现,使用Nacos作为服务发现与注册,同时兼容使用Feign的http方式和使用Dubbo的rpc方式调用。Spring Cloud 为什么需要RPC在Spring Clou原创 2020-09-06 11:06:17 · 1161 阅读 · 1 评论 -
SpringBoot RabbitMQ消息队列的重试、超时、延时、死信队列
今天介绍使用SpringBoot实现RabbitMQ消息队列的高级用法。MQ安装自动创建消息重试消息超时死信队列延时队列一、RabbitMQ的安装众所周知,RabbitMQ的安装相对复杂,需要先安装Erlang,再按着对应版本的RabbitMQ的服务端,最后为了方便管理还需要安装rabbitmq_management管理端插件,偶尔还会出现一些安装配置问题,故十分复杂。在开发测试环境下使用docker来安装就方便多了,省去了环境和配置的麻烦。1. 拉取官方imagedocker p原创 2020-08-31 17:38:55 · 3606 阅读 · 0 评论 -
微服务下的用户鉴权方案
上一章讲了微服务下的用户身份认证《SpringCloud Gateway 身份认证》,这次主要讲如何进行鉴权。相对上一章的身份认证代码略有改动Java下常用的安全框架主要有Spring Security和shiro,都可提供非常强大的功能,但学习成本较高。在微服务下鉴权多多少少都会对服务有一定的入侵性。为了降低依赖,减少入侵,让鉴权功能相对应用服务透明,我们采用网关拦截资源请求的方式进行鉴权。一、整体架构用户鉴权模块位于API GateWay服务中,所有的API资源请求都需要从此通过。做身份原创 2020-08-27 16:40:39 · 2120 阅读 · 0 评论 -
SpringCloud Gateway 身份认证
文章目录一、微服务架构二、实现路由转发1. 引入gateway包2. 添加启动类3. 配置路由表三、实现身份认证1. 用户登陆保存session状态2. 增加**AuthCheckFilter**,拦截路由请求3. 配置Filter三、完整代码请关注我的公众号使用SpringCloud技术栈搭建微服务集群,可以选择的组件比较多,由于有些组件已经闭源或停更,这里主要选用spring-cloud-alibaba作为我们的技术栈。服务注册与发现: nacos-discovery统一配置管理:nacos-c原创 2020-08-19 11:58:08 · 2207 阅读 · 1 评论 -
领域建模的贫血模型与充血模型
领域建模是通过识别领域对象与行为来连接与现实世界业务主体与操作的映射关系。对象与行为的组织设计原则更体现面向对象设计的思想,通过聚合、解耦、抽象、组合等多种设计方式达到系统可复用,可维护,易扩展的能力。在实际程序代码设计中,由于语言、结构、技术的不一样对领域建模代码落地也有所不同,且各有优缺点。一、贫血模型此种模型下领域对象的作用很简单,只有所有属性的get/set方式,以及少量简单的属性值转换,不包含任何业务逻辑,不关系对象持久化,只是用来做为数据对象的承载和传递的介质。@Entity@Data原创 2020-08-03 14:09:15 · 543 阅读 · 0 评论 -
使用领域驱动设计分析业务
开发人员在需求拿到之后,写代码前需要对项目进行需求分析和系统设计。一些业务逻辑和流程较复杂的项目,如何即能快速地抓住重点,清晰理解需求,又能设计出具体扩展性的系统架构呢?答案是使用领域驱动设计,以下是引用网上对此的一段描述:领域驱动设计是一种针对大型复杂系统的领域建模与分析方法。它完全改变了传统软件开发工程师针对数据库进行的建模方法,从而将要解决的业务概念和业务规则转换为软件系统中的对象以及对象的属性与行为,通过合理运用面向对象的封装、继承和多态等设计要素,降低或隐藏整体系统的业务复杂性,并使得系统具有原创 2020-06-21 16:13:15 · 419 阅读 · 0 评论 -
中台改造,我之拙见
中台是个啥中台是个啥,感觉是一个很复杂的东西。网上很多相关的文章,但好像越说越复杂,并没有一个统一的定义。我从18年一个阿里背景的到企业来做项目推广时第一次听到中台一词。“中台?”我以为听错了,我只听到“前台”“后台”,“中台”又是个啥?后来在网上了解了一下,感觉挺高大上的,由此对它越来越有兴趣。经过一些人的不断鼓动,领导也觉得好像是可以做的事情,好像收益也不错,便决定我们来做中台吧。我们没有经验得请一个第三方公司来做,期间我们见了好几种类型的外包公司,有理念很强想咨询的,有理念一般想推产品的,还有更原创 2020-06-06 12:58:07 · 481 阅读 · 0 评论 -
架构师如何对待不会的技术问题
文章目录认清自己学习是一种习惯兴趣是最好的驱动力在实践中加强学习能力比知识点更重要提升知识的眼界最后对于从小厂基层一步一步成长起来的架构师,技术经验不够全面,如何面对面试大厂时对方提出的自己不会的技术问题呢?从小厂基层成长起来的架构师,技术经验基本上都是从实践中获得。而主动学习,翻阅文献吸收回来的东西,在公司体量和环境的实际限制下大多也停留在理论基础上,没有实践不一定深刻,如何改变这样的状态呢?架构师涉略的知识面可为非常全面的,现在获取知识也越来越便捷,博客、公众号比比皆是,有写面试题的,有写经验分原创 2020-05-30 18:28:19 · 160 阅读 · 0 评论 -
微服务下技术实践思考 -- 业务与应用架构设计
企业级微服务架构设计实践需要从宏观到微观层面的思考,主要分为业务架构、应用架构、技术架构和开发设计方法论。一、业务架构思考要建设企业的信息系统首先要明确系统的需求,而要制定系统需求则首先要明确系统对于企业来讲要解决哪些问题,哪些参与对象以及如何参与,然后再考虑如何使用信息化手段来优化提升生产力,这就是业务架构需要解决的问题。1. 业务领域识别主要明确业务操作的业务主体,业务功能,和业务边界...原创 2020-04-09 22:37:16 · 199 阅读 · 0 评论