微服务架构案例(01):项目技术选型简介,架构图解说明
一、单体架构
单体架构在中等偏小的业务中比较常见,场景模式就是单个应用、单个数据库。一个程序包(例如war格式或者Jar格式)包含所有业务需求功能,这是一种比较传统的架构风格。
单体架构的缺陷
- 复杂性高,整个项目包含的模块多,依赖模糊,修改程序容易触发不可知问题。
- 扩展能力受限,单体应用只能整体进行扩展,无法针对业务模块的特性进行伸缩。
- 稳定性差,任何微小的问题,都可能导致整个应用服务直接挂掉。
二、微服务架构
微服务架构是一种架构概念,核心思想在于通过将业务功能和需求分解到各个不同的服务中进行管理,实现对业务整体解耦。围绕业务模式创建应用服务,应用服务可独立地进行开发、迭代、部署。使项目的架构更加清晰明确。
微服务优劣势
- 单个服务对应单个业务功能,方便理解,开发,维护;
- 服务独立部署,可以根据每个服务的请求量来部署满足需求的规模;
- 数据库,服务,架构,业务拆分等难度增大,对技术能力要求较高;
三、项目简介
微服务架构案例核心内容,基于SpringCloud框架几个核心组件,Eureka服务注册与发现组件,Feign声明式的WebService客户端组件,Zuul动态路由网关组件。进行多个数据管理,多个服务管理搭建,多个中间件集成,多业务拆分等模式,搭建SpringCloud微服务框架的综合应用案例。
核心模块
- 业务拆分架构设计
- 多个中间件服务集成
- 微服务下代码分块管理
- 多个MySQL数据源管理
四、技术选型
1、核心框架组件
1. 基础层框架:Spring5+,SpringBoot2+,SpringCloud2+ 2. 持久层框架:mybatis,mybatis-plus 3. 开发组件:Druid,Log4j,FastJson,JodaTime,JavaMail 4. 中间件集成:RocketMQ,Redis,Quart,ElasticSearch 5. 数据存储:MySQL、Redis、ElasticSearch
2、代码分层结构
五、项目架构
1、架构图解
2、架构说明
- 客户端接口服务
1. 用户端服务接口; 2. 管理端服务接口; 3. 数据入库服务接口; 4. 数据分析服务接口
- 通用服务接口
1. RocketMQ消息队列服务 ; 2. ElasticSearch搜索引擎服务 ; 3. Quart定时器服务 ; 4. Redis缓存服务 ; 5. 基础业务:Token认证服务 ; 6. 基础业务:MsgBox消息中心服务 ;
- 微服务组件
1. 路由网关:Zuul组件; 2. 服务注册与发现:Eureka组件; 3. 服务间调用组件:Feign组件;
- 数据存储容器
MySQL、Redis、ElasticSearch
这样,本节案例就结束了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
解Bug之路-记一次调用外网服务概率性失败问题的排查
前言 和外部联调一直是令人困扰的问题,尤其是一些基础环境配置导致的问题。笔者在一次偶然情况下解决了一个调用外网服务概率性失败的问题。在此将排查过程发出来,希望读者遇到此问题的时候,能够知道如何入手。 起因 笔者的新系统上线,需要PE执行操作。但是负责操作的PE确和另一个开发在互相纠缠,让笔者等了半个小时之久。本着加速系统上线的想法,就想着能不能帮他们快速处理掉问题,好让笔者早点发完回去coding。一打听,这个问题竟然扯了3个月之久,问题现象如下: 每个client都会以将近1/2的概率失败,而且报错都为: 着手排查 和appserver开发以及对应的PE交流发现,appserver和nginx之间是短连接,由于是socketTimeOutException,于是能够排除appserver和nginx建立连接之间的问题。去nginx上排查日志,发现一个奇异的现象,如下图所示: 所有的appserver都是调用一台nginx一直成功,而调用另一台nginx大概率失败。而两台nginx机器的配置一模一样,还有一个奇怪的点是,只有在调用出问题的对端服务器时才会失败,其它业务没有任何影响,如下...
- 下一篇
Knative 实战:基于 Kafka 实现消息推送
作者 |元毅阿里云智能事业群高级开发工程师 导读:当前在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何基于 Kafka 实现消息推送呢?本文作者将以阿里云 Kafka 产品为例,给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列 for Apache Kafka 广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。 结合 Knative 中提供了 KafkaSource 事件源的支持, 可以方便的对接 Kafka 消息服务。 另外也可以安装社区 Kafka 2.0.0 及以上版本使用。 在阿里云上创建 Kafka 实例 创建 Kafka 实例 登录消息队列 Kafka 控制台,
相关文章
文章评论
共有0条评论来说两句吧...