专业的编程技术博客社区

网站首页 > 博客文章 正文

基于Java的微服务架构源码案例Abixen

baijin 2024-08-17 10:53:35 博客文章 7 ℃ 0 评论

微服务越来越受欢迎,每个月都有更多的库包和解决方案来支持微服务的开发测试,很多Java开发人员虽然听说过微服务,但是真正采用还是有犹豫的:“我知道,微服务是非常棒的,微服务器更容易维护和进一步开发,但我们没有建立一个良好的基于微服务架构的资源。”


许多尝试创建微服务应用程序(例如使用Netflix OSS堆栈)的开发人员都疑惑他们是否有足够的知识来配置整个系统。因为微服务架构所需知识与与单片monolithic 应用程序非常不同,需要额外的组件功能,如请求监视,用于在服务之间共享通信的队列,注册表服务,配置服务等等。同时为每个微服务保留一个单独的数据模型也是一个很好的做法。

在创建模块化Web应用程序时,开发人员必须专注于精心设计的业务领域设计。将模块之间的所有耦合最小化,这样至少避免了体系架构的复杂性。

Abixen Platform是一个完整的微服务架构系统,其源码可见Github地址:https://github.com/abixen/abixen-platform.

其体系组成部分如下:

1. Eureka:作为服务的注册器。

2. Hystrix仪表板:允许我们实时监控请求状态(例如,多少请求超时,多少次成功,多少次失败等)。

3. Zipkin:一种分布式跟踪系统,可帮助您收集应用程序中发生高延迟问题(性能慢)所需的数据。

4. Redis数据库:用于保存登录用户的信息。

5. RabbitMQ:用作在特定微服务器之间发送消息的队列。例如,核心微服务删除一个模块实例,需要让商业智能微服务或Web内容微服务删除与其相关的所有配置。

6. Abixen Platform Common:包含用函数式微服务实现的通用API的JAR。

7. Abixen平台配置:配置微服务。整个应用程序可以在YAML文件中进行逐个配置。

8. Abixen Platform Web Client:核心功能的静态内容,如页面和模块管理,安全管理等。

9. Abixen平台网关:起到安全网关的作用。每个请求都必须通过这个微服务。

10. Abixen平台核心:拥有自己的业务核心数据库,拥有平台的核心功能,如页面和模块管理,安全管理等。

11. Abixen平台商业智能服务:由于应用程序带来了函数性的微服务,因此我们将在这里放置一个用于商业智能报告,图表创建和进一步管理的模块。它也有自己的数据库。

12. Abixen平台Web内容服务:这与上述服务类似,但是这个函数可以提供内容创建功能,例如用户可以创建文章。它还有自己的数据库。

13. 您的服务:由开发人员使用该平台创建的定制微服务。

该架构基于Netflix OSS技术栈。函数性的微服务不需要在整个平台上都要部署,您如果不需要图表或文章管理器,您也可以部署这个平台并使用独立开发的微服务。

该架构也很好地映射到Amazon组件。使用诸如EC2,ALB,ECS,ECR,Route53,CloudWatch,Elasticache,ERD和SES之类的服务在AWS上部署应用程序。

工作原理:

1. 用户使用Web客户端生成请求。通过Zuul Proxy,请求被转发到网关微服务。

2. 网关微服务执行安全操作。如果用户未通过身份验证,则会引发“未经授权”的异常。如果经过身份验证,则Zuul Proxy会决定将请求发送到核心平台或指定的微服务,如商业智能,Web内容或由第三方开发人员创建的。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表