微服务架构案例(01):项目技术选型简介,架构图解说明

本文源码:GitHub·点这里 || GitEE·点这里

一、单体架构

单体架构在中等偏小的业务中比较常见,场景模式就是单个应用、单个数据库。一个程序包(例如war格式或者Jar格式)包含所有业务需求功能,这是一种比较传统的架构风格。

单体架构的缺陷

  1. 复杂性高,整个项目包含的模块多,依赖模糊,修改程序容易触发不可知问题。
  2. 扩展能力受限,单体应用只能整体进行扩展,无法针对业务模块的特性进行伸缩。
  3. 稳定性差,任何微小的问题,都可能导致整个应用服务直接挂掉。

二、微服务架构

微服务架构是一种架构概念,核心思想在于通过将业务功能和需求分解到各个不同的服务中进行管理,实现对业务整体解耦。围绕业务模式创建应用服务,应用服务可独立地进行开发、迭代、部署。使项目的架构更加清晰明确。

微服务优劣势

  1. 单个服务对应单个业务功能,方便理解,开发,维护;
  2. 服务独立部署,可以根据每个服务的请求量来部署满足需求的规模;
  3. 数据库,服务,架构,业务拆分等难度增大,对技术能力要求较高;

三、项目简介

微服务架构案例核心内容,基于SpringCloud框架几个核心组件,Eureka服务注册与发现组件,Feign声明式的WebService客户端组件,Zuul动态路由网关组件。进行多个数据管理,多个服务管理搭建,多个中间件集成,多业务拆分等模式,搭建SpringCloud微服务框架的综合应用案例。

核心模块

  1. 业务拆分架构设计
  2. 多个中间件服务集成
  3. 微服务下代码分块管理
  4. 多个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

六、源代码地址

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

原文地址:https://www.cnblogs.com/cicada-smile/p/11736086.html

时间: 2024-11-05 04:52:00

微服务架构案例(01):项目技术选型简介,架构图解说明的相关文章

微服务架构案例(03):数据库选型简介,业务数据规划设计

本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 一.数据库选择 1.数据库分类 数据库类型 常见数据库 关系型 MySQL.Oracle.DB2.SQLServer等. 非关系型 Hbase.Redis.MongodDB等. 行式存储 MySQL.Oracle.DB2.SQLServer等. 列式存储 Hbase.ClickHouse等. 分布式存储 Cas

微服务监控案例之一

     首先,您需要了解什么是微服务架构设计,同时了解相关微服务与Docker介绍, 微服务架构的本质,是把整体的业务拆分成很多有特定明确功能的服务,通过很多分散的小服务之间的配合,去解决更大,更复杂的问题.对被拆分后的服务进行分类和管理,彼此之间使用统一的接口来进行交互.      微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题,但是在微服务的架构下,大部分功能模块都是单独部

Rest微服务构建 案例工程模块

总体介绍 承接着我们的springmvc+mybatis+mysql初级高级课程,以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务 Maven的分包分模块架构复习 一个简单的Maven模块结构是这样的: springcloud父工程(Project)下初次带着3个子模块(Module) 创建pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0

(转).net项目技术选型总结

原文作者:mcgrady 原文地址:.net项目技术选型总结 做.net开发已经几年了,也参与开发了很多大大小小的项目,所以现在希望总结出一套开发.net项目的常用技术,也为以后做项目技术选型的时候作为参考. 数据库 小型项目:SQLite 中大型项目:MS SQL Server(国内) / Mysql(国外) 数据访问技术 SqlHelper(ADO.NET) 轻型ORM:Dapper / PetaPoco 大型ORM:EF / NHibernet 服务端技术 ASP.NET MVC WCF

maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 1.1创建聚合工程的父模块 1.2设置父模块的POM文件 主要是配置 spring boot版本,spring cloud 版本,和一些通用的依赖 比如这里的 lombok依赖 <?xml version="1.0" encoding="UTF-8"?>

Aibabelx-shop 大型微服务架构系列实战之技术选型

一.本项目涉及编程语言java,scala,python,涉及的技术如下: 1.微服务架构: springboot springcloud mybatisplus shiro 2.全文检索技术 solr 3.日志系统技术 elk 4.消息中间件 kafka 5.数据库技术 mysql redis mongoDB mycat 6.缓存技术 redis memcache 7.大数据系列技术 hadoop hbase hive flume strom sprak flink blink beam Im

基于微服务API级权限的技术架构

一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的 访问控制方法(RBAC – Role Based Access Control),即权限 (Permission)与角色相关联,用户(User)通过成为适当角色的成员而得到这 些角色的权限,权限包含资源(或者与操作组合方式相结合),最终实现权限控制 的目的. 背景 权限系统是根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源. 一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的访问控制方法(

唱吧DevOps的落地,微服务CI/CD的范本技术解读

原文地址:http://www.infoq.com/cn/articles/devops-landing-in-changba?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 作者 钮博彦 刘宇桐 发布于 2017年3月28日. 1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里

微服务实践(七):从单体式架构迁移到微服务架构

迁移到微服务综述 迁移单体式应用到微服务架构意味着一系列现代化过程,有点像这几代开发者一直在做的事情,实时上,当迁移时,我们可以重用一些想法. 一个策略是:不要大规模(big bang)重写代码(只有当你承担重建一套全新基于微服务的应用时候可以采用重写这种方法).重写代码听起来很不错,但实际上充满了风险最终可能会失败,就如Martin Fowler所说:“the only thing a Big Bang rewrite guarantees is a Big Bang!” 相反,应该采取逐步迁