微服务轮子项目(02) - 框架技术选型

简介: 微服务轮子项目(02) - 框架技术选型

1. 引言

本文的代码已上传到Github,有兴趣的同学可以参考下:https://github.com/ylw-github/backend-wheel

在上一篇博客《微服务轮子项目(01) - 整体架构》,主要讲解了轮子项目的整体架构(如下图),本文主要讲解的是技术选型。

2. 技术选型

2.1 技术架构图

这是我整理的一张技术架构图:

2.2 项目构建元素

  • 分布式系统套件版本:Spring Boot 2.x + Spring Cloud + Spring Cloud Alibaba
  • 服务治理注册与发现:Spring Cloud Alibaba Nacos(注意0.8.0才是生产可用状态)
  • 统一配置中心:Spring Cloud Alibaba Nacos
  • 服务降级、熔断和限流:alibaba/Sentinel
  • 网关路由代理调用:Spring Cloud Gateway / Netflix Zuul
  • 声明式服务调用:Spring Cloud OpenFeign
  • 服务负载均衡:Spring Cloud Netflix Ribbon
  • 服务安全认证:Spring Security
  • 数据访问层:Mybatis-plus
  • 分布式事务:alibaba/Seata(注意1.0才是生产可用状态)
  • 统一日志收集存储:ELK + Filebeat
  • 服务应用监控:Spring Cloud Admin
  • 服务调用链监控:Skywalking
  • 分布式任务调度:XXL-JOB
  • 全文搜索引擎:Elasticsearch
  • 分库分表:Sharding-JDBC
  • 容器管理平台:Rancher
  • 其它待补充…
2.2.1 组件对比

服务注册发现:Nacos 对比 Eureka

  • eureka闭源了,所以不作考虑
  • nacos是目前比较看好的后起之秀,并且是ap模型非常适合注册中心支持多机房部署;同时无缝对接与支持dubbo、spring cloud和kubernates云原生体系

配置中心:Nacos 对比 Apollo

  • Nacos缺点:目前的版本在功能上还是比apollo要少点,主要体现在发布审计、灰度发布等功能。
  • Nacos优点:支持yml格式,并且和注册中心是同一套中间件,方便管理运维

服务降级、熔断和限流:Sentinel 对比 Hystrix

  • hystrix停止更新了
  • sentinel 的功能比hystrix要多,主要为以下几点
  • ----------支持动态配置规则(业务无入侵)
  • ----------支持系统负载保护(根据自定义规则总体保护,不限于某个接口)
    完善的控制台(开箱即用、可配置规则、秒级监控、机器发现等)

2.3 功能模块

2.3.1 统一认证功能
  • 网关统一认证
  • url级权限控制
  • 支持oauth2的四种模式登录
  • 支持用户名、密码加图形验证码登录
  • 支持手机号加密码登录
  • 支持openId登录
  • 支持第三方系统单点登录
  • 其它待补充…
2.3.2 分布式系统基础支撑
  • 服务注册发现、路由与负载均衡
  • 服务降级与熔断
  • 服务限流(url/方法级别)
  • 统一配置中心
  • 统一日志中心
  • 统一搜索中心
  • 统一分布式缓存操作类、cacheManager配置扩展
  • 分布式锁
  • 分布式任务调度器
  • 支持CI/CD持续集成(包括前端和后端)
  • 分布式Id生成器
  • 分布式事务(强一致性/最终一致性)
  • 日志链路追踪
  • 其它待补充…
2.3.3 系统监控功能
  • 服务调用链监控
  • 应用拓扑图
  • 应用统一日志查询
  • 慢查询SQL监控
  • 应用吞吐量监控(qps、rt)
  • 服务降级、熔断监控
  • 服务限流监控
  • 微服务服务监控
  • 服务器监控
  • redis监控
  • mysql监控
  • elasticSearch监控
  • nacos监控
  • prometheus监控
  • 其它待补充…
2.3.4 业务基础功能支撑
  • 多租户(应用隔离)
  • 高性能方法级幂等性支持
  • RBAC权限管理,实现细粒度控制(方法、url级别)
  • 快速实现导入、导出功能
  • 数据库访问层自动实现crud操作
  • 代码生成器
  • 基于Hutool的各种便利开发工具
  • 网关聚合所有Swagger接口文档
  • 统一跨域处理
  • 统一异常处理
  • 其它待补充…

3. 总结

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
1112 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
299 0
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1326 0
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
924 3
|
11月前
|
人工智能 数据可视化 JavaScript
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
Juggle是国内首个开源的微服务编排框架,专注于解决企业微服务进程中接口重复开发、系统对接复杂等问题。它提供零代码、低代码和AI增强功能,通过可视化拖拽快速组装简单API为复杂接口,支持多协议、多语言脚本和流程多版本管理。相比国外框架如Conductor,Juggle更贴合国内需求,具备高效开发、企业级可靠性及信创适配等优势,助力企业实现敏捷创新与数字化转型。
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
|
NoSQL Java 数据库连接
微服务——MongoDB实战演练——技术选型
本节主要介绍技术选型中的两个重要工具:**mongodb-driver** 和 **SpringDataMongoDB**。其中,mongodb-driver 是 MongoDB 官方提供的 Java 驱动包,用于连接和操作 MongoDB 数据库,功能类似 JDBC 驱动。通过官方示例可快速上手。而 SpringDataMongoDB 是 Spring 生态的一员,封装了 mongodb-driver,提供了更简洁的 API,方便开发者在 Spring 环境中操作 MongoDB。两者各有优势,可根据实际需求选择合适的技术方案。
224 2
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
601 0
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
在微服务架构中,随着业务复杂度增加,项目可能需要调用多个微服务。为避免使用`@Value`注解逐一引入配置的繁琐,可通过定义配置类(如`MicroServiceUrl`)并结合`@ConfigurationProperties`注解实现批量管理。此方法需在配置文件中设置微服务地址(如订单、用户、购物车服务),并通过`@Component`将配置类纳入Spring容器。最后,在Controller中通过`@Resource`注入配置类即可便捷使用,提升代码可维护性。
259 0
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
分布式计算 Java 持续交付
如何选择合适的微服务框架
如何选择合适的微服务框架
395 0

热门文章

最新文章