如何快速搭建一个微服务架构?

  • 回答 (8)
  • 关注 (0)
  • 查看 (1260)

微服务架构的目的就是为了降低系统的复杂性,所以微服务架构应该比单体架构更简单、更好实践。重点是,如何搭建一个简单模式的微服务架构?

奔Reborn奔Reborn提问于
林岑影let bio = '这家伙真懒, 什么都没留下...'回答于

首先,使用微服务简单模式进行开发的四个步骤:

第一步:沿用组织中现有的技术体系开发单一职责的微服务。

第二步:服务提供方将地址信息注册到注册中心,调用方将服务地址从注册中心拉下来。

第三步:通过门户后端(服务网关)将微服务 API 暴露给门户和移动 APP。

第四步:将管理端模块集成到统一的操作界面上。

为了实现以上 4 点,相对应的就是下面必需掌握的基础技术(必需的组件)。

注册中心、服务发现、负载均衡:对应上边第一步与第二步

服务网关:对应上边第三步

管理端集成框架:对应上边第四步

其次,微服务架构是由一系列职责单一的细粒度服务构成的 分布式网状结构,服务之间通过轻量机制进行通信,这时候必然引入一个服务注册发现问题,也就是说服务提供方要将自己的服务地址注册到某个地方(服务注册中心, Service Registry Center),服务的调用方可以从服务注册中心找到需要调用的服务的地址(服务发现,Service Discovery)。

同时,服务提供方一般以集群方式提供服务,则引入了负载均衡 的需求。

目前主要的服务注册、发现和负载均衡方案有三种:

1、集中式 LB 方案

2、进程内 LB 方案

3、主机独立 LB 进程方案

彼岸轮回回答于

选择进程内 LB 方案

首先,随着 Netflix 的微服务方案和 Spring Cloud 的兴起与成熟,进程内 LB 方案成为我们的首选。

其次,推荐使用 Eureka 做服务注册中心,Ribbon 做客户端服务发现和负载均衡。

最大好处是:

1、简单 + 实用 + 可控,不用引入额外的 Zookeeper、Etcd 做注册中心,部署和运维也都比较简单。

2、从代码上来说,使用起来也非常简单。

下面是 Eureka 最重要的几个参数配置,从这些参数也可以大概看看 Eureka 是如何工作的。

来源于jsk123456博客

由于 Eureka 的注册及过期机制,服务从启动到完全可用需要近 2 分钟的时间,所以,为了提高开发及测试环境中的发版速度,我们改了以下几个参数。生产时,一定要改回去。

来源于jsk123456博客

Eureka 注册中心的界面如下:

来源于jsk123456博客
吴凌云千里之行,始于足下回答于

三步集成一个微服务的基本过程就是:

在微服务中引入基于 Spring Boot 的 security starter,starter 里包含了系统的顶端 Banner 和左侧菜单。

将微服务的访问地址注册到 UPMS 中,这个地址作为此微服务的入口菜单。

在UPMS 中配置微服务的功能菜单及角色权限信息。

用户从浏览器打开一个微服务的时候,security starter会调用UPMS的API 拉取所有的微服务清单和当前微服务的功能清单,并将当前微服务的页面在内容区展现给用户。

应用架构图:

来源于jsk123456博客

UPMS 截图,橙色部分由 UPMS 框架提供,红色框为微服务的页面:

来源于jsk123456博客

UPMS 通过“模块”功能接入新的微服务:

来源于jsk123456博客

所以,到最后,一个简单模式的基于微服务架构的系统就可以长成这样:

来源于jsk123456博客

基本的微服务架构已经搭建起来。

烽火连天博一笑登东皋以舒啸,濯清流而赋诗回答于

如果希望更好地发挥微服务架构的优势,规避缺点,则建议准备一个可靠的基础设施,包含自动构建、自动部署、日志中心、健康检查、性能监控等功能。

不安现状的h回答于

利用基于 Docker 的容器服务平台自动部署整个系统的微服务。其过程如下图:

来源于百度百科
依丶旧回答于

实施微服务架构后,整个系统的模块一下子比原来多了很多,模块变多后,部署和维护的工作量都会变大。

痛并快乐着回答于

掌握注册中心、服务发现、负载均衡和服务网关技术后,微服务已经可以为门户系统和移动 APP 提供可靠服务。

唐伯虎点蚊香回答于

一个大系统里会有很多职责单一的微服务,如果门户系统或移动 APP 来调用这些微服务的 API 时,至少要做好两件事:

1、由统一的入口来调用微服务的 API

2、API 鉴权

扫码关注云+社区

领取腾讯云代金券