共计 2546 个字符,预计需要花费 7 分钟才能阅读完成。
举荐????:
- 靠近 100K star 的 Java 学习 / 面试指南
- Github 95k+ 点赞的 Java 面试 / 学习手册.pdf
明天给小伙伴们举荐一个敌人开源的面试刷题零碎。
这篇文章我会从零碎架构设计层面详解介绍这个开源我的项目,并且会把微服务罕用的一些技术都介绍一下。即便你对这个我的项目不感兴趣,也能理解到很多微服务相干的常识。美滋滋!
昨晚肝了很久~ 原创不易,若有帮忙,求赞求转发啊!
不得不说,这个刷题零碎的确是有点货色,你真的值得领有!首先,这是一个微服务的我的项目,其次这个零碎涵盖了市面上罕用的支流技术比方 SpringBoot、Spring Cloud 等等(前面会具体介绍)。
不论是你想要学习分布式的技术,还是想找一个实战我的项目练手或者作为本人的我的项目教训,这个我的项目都非常适合你。
另外,因为我的项目作者提供了具体的技术文档,所以你不必放心上手太难!
效果图
咱们先来看看这个面试刷题零碎的效果图。这里咱们只展现的是这个零碎的前端(微信小程序),后盾管理系统这里就不展现了。
能够看到,除了少部分中央的色彩搭配比拟难看之外,页面整体 UI 还是比拟好看的。
技术栈
再聊聊大家最关怀的问题:“ 这套零碎的技术栈是什么样的呢?”。
这套零碎采纳了目前企业都在用的支流技术:SpringBoot(根底框架)、Spring Cloud(微服务)、MyBatis(ORM 框架)、Redis(缓存)、MySql(关系型数据库)、MongoDB(NoSQL)、RabbitMQ(音讯队列)、Elasticsearch(搜索引擎)。并且,这个零碎是以 Docker 容器化的形式进行部署的。十分实用!
零碎架构设计
理解了技术栈之后,那必然须要简略理解一下整个 零碎的架构设计 ,这是零碎的灵魂所在了(图源:PassJava 官网文档)。
网关
网关负责认证受权、限流、熔断、降级、申请散发、负载平衡等等操作。个别状况下,网关个别都会提供这些性能。
这里应用的是 Spring Cloud Gateway 作为网关。Spring Cloud Gateway 是 Spring Cloud 官网推出的第二代网关框架,目标是取代 netflix 的 Zuul 网关。
注册核心和配置核心
注册核心和配置核心这块应用的是阿里巴巴开源的 Nacos。Nacos 目前属于 Spring Cloud Alibaba 中的一员。次要用于发现、配置和治理微服务,相似于 Consul、Eureka。并且,提供了分布式配置管理性能。
Nacos 的根本介绍如下(图源:官网文档 - 什么是 Nacos):
详解介绍一下 Nacos 在这个我的项目中提供的两个外围性能:
- 注册核心 :API 网关通过注册核心实时获取到服务的路由地址, 精确地将申请路由到各个服务。
- 配置核心 :传统的配置形式须要重新启动服务。如果服务很多,则须要重启所有服务,十分不不便。通过 Nacos,咱们能够动静配置服务。并且,Nacos 提供了一个简洁易用的 UI 帮忙咱们治理所有的服务和利用的配置。
对于配置核心,咱们这里再拓展一下,除了 Nacos,还有 Apollo、SpringCloud Config、K8s ConfigMap 可供选择。
分布式链路追踪
不同于单体架构,在分布式架构下,申请须要在多个服务之间调用,排查问题会十分麻烦。咱们须要分布式链路追踪零碎来解决这个痛点。
分布式链路追踪这块应用的是 Twitter 的 Zipkin,并且联合了 Spring Cloud Sleuth。
Spring Cloud Sleuth 只是做一些链路追踪相干的数据记录,咱们能够应用 Zipkin Server 来解决这些数据。
相干浏览:《40 张图看懂分布式追踪零碎原理及实际》。
监控零碎
监控零碎能够帮忙咱们监控应用程序的状态,并且可能在危险产生前告警。
监控零碎这块应用的是 Prometheus + Grafana。Prometheus 负责收集监控数据,Grafana 用于展现监控数据。咱们间接将 Grafana 的数据源抉择为 Prometheus 即可。
对于监控零碎更具体的技术选型,能够看这篇文章:《监控零碎选型看这一篇够了!抉择 Prometheus 还是 Zabbix?》。
音讯队列
咱们晓得,音讯队列次要能为零碎带来三点益处:
- 通过异步解决进步零碎性能(缩小响应所需工夫)。
- 削峰 / 限流
- 升高零碎耦合性。
罕用的音讯队列有:RabbitMQ(本零碎所采纳的计划)、Kafka、RocketMQ。
缓存
缓存这里应用的是 Redis,陈词滥调了,这里就不再多做介绍。
另外,为了保障缓存服务的高可用,咱们应用 Redis 官网提供了一种 Redis 集群的解决方案 Redis Sentinel 来治理 Redis 集群。
数据库
数据库这里应用的是 MySQL,并应用主从模式实现读写拆散,以进步读性能。
对象存储
因为是分布式系统,传统的将文件上传到本机曾经没方法满足咱们的需要了。
因为本人搭建分布式文件系统也比拟麻烦,所以对象存储这里咱们应用的是阿里云 OSS,它次要用于存储一些文件比方图片。
疾速开发脚手架
另外,为了后盾的疾速搭建这里应用的是 renren-fast 疾速开发脚手架。应用这个脚手架配合上代码生成器 renren-generator,咱们能够疾速生成 70% 左右的前后端代码。相对是疾速开发我的项目并交付以及接私活的利器了!
我在之前的也举荐过这个脚手架,详情请看上面这两篇文章:
- 据说你要接私活?Guide 连夜整顿了 5 个开源收费的 Java 我的项目疾速开发脚手架。
- 解放双手,再来举荐 5 个 Java 我的项目开发疾速开发脚手架!我的项目教训和私活都不愁了!
总结
这篇文章我次要从架构设计层面剖析了敌人开源的这个基于微服务的刷题零碎。
当然了,敌人应用微服务开发这个我的项目的次要目标也是为了本人实际微服务相干的常识,同时也是为了给须要微服务相干实战我的项目教训的小伙伴一个能够学习的我的项目。不然的话,间接用单体就完事了,齐全能够撑持这个我的项目目前的并发量以及可预感的将来的并发量。
- 我的项目地址:https://github.com/Jackson071…
- 文档地址:http://jayh2018.gitee.io/pass…
再来一次!昨晚肝了很久~ 原创不易,若有帮忙,求赞求转发啊!
我的 Github 地址:Snailclimb – Overview