Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >领导让我做个独立服务

领导让我做个独立服务

作者头像
Java阿呆
发布于 2021-08-23 05:52:30
发布于 2021-08-23 05:52:30
4240
举报
文章被收录于专栏:Java阿呆Java阿呆

好久不见,我是阿呆

如题,这季度要做的需求,是一个独立模块,但是由于项目越来越大,模块间的结构越来越复杂,不得不面临的一个问题就是服务拆分,当然,在拆分之前,新加的模块,最好还是直接做成一个独立的服务,这不,要把本季度的需求,单独做一个服务出来,因为这是项目的第一个独立服务,所以要考虑和准备不少东西,蛮有挑战性的,在这里总结下我对微服务浅陋的见解。

01

GATEWAY

网关路由

要想做一个独立的服务出来,首先需要解决的就是服务间的路由问题,因为当前只有一个服务,所有的API都指向这个服务,当有另外一个服务之后,就需要解决API层的路由问题。

比如说,当前的项目服务是ServiceA,服务域名是www.service.com,所有访问该服务的API都以/A开头,即http://www.service.com/A,这个时候加入一个ServiceB,所有的API都以/B开头,那么访问服务B的URL就是http://www.service.com/B,说起来很简单,但是服务器怎么知道/A就是ServiceA,/B是ServiceB呢,这时候就需要一个网关的角色,来做这个路由:

后续如果有ServiceC的话,直接在网关服务中配置对应的路由即可。

02

SERVICE-REGISTER

服务注册中心

有了路由之后,似乎还有另外一个问题,网关也是一个服务,那冥冥之中,网关去哪里能找ServiceA和ServiceB呢,所以需要有一个集中管理这些服务的地方,即服务注册中心,网关服务、ServiceA、ServiceB都向这个注册中心注册服务,这样这些服务都是一家人了,网关服务当然就能找到它的家人了:

后续如果有新的服务ServiceC,那只需将ServiceC也注册到注册中心即可。

03

COMMUNICATION

服务间通信

到这里,似乎一切都很完美了,吗?并没有,如果ServiceA和ServiceB之间想通信怎么办?似乎没有考虑到哦。

服务间的调用,是不可以走网关的,只能通过彼此的客户端调用,客户端调用有两种方式,一种是RestTemplate,一种是Feign,这两种方式就不展开讲了,知道有这么回事就行了(因为我也不会

)。

那么这样的话,这个图就变成了这个样子:

04

TECHNOLOGY

技术选型

基本的思路有了之后,就要选择具体的实现框架,对于网关,可以选择Zuul或者SpringCloud Gateway,我们的项目选择后者,对于注册中心,可以选择Eureka,或Consul,或Zookeeper,或者阿里的新型框架,Nacos,我们项目选择Nacos,服务调用就用Feign,就这么定了,谁说都不好使的那种。

05

Database

数据库表间解耦

既然拆分了服务出来,那么数据库表自然要解耦,不管分不分库出来,解耦是一定要做的,数据库层的解耦,体现在不改变原表结构的情况下,完成新表的设计,同时不能使用外键关联,尽管多几张关联表。

06

LAST

最后

最后,的最后,记录几点微服务拆分的规范:

微服务拆分规范

1、服务拆分最多三层,两次调用;

2、服务间仅仅单向调用,严禁循环调用;

3、将串行调用改为并行调用,或者异步调用;

4、接口应该实现幂等;

5、接口数据定义严禁内嵌、透传;

6、规范化工程名;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder阿呆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
构建弹性可扩展的微服务架构:基于Spring Cloud Alibaba 的实践
随着互联网业务的不断发展,传统的单体应用逐渐无法满足日益复杂的业务需求和用户量的增长。微服务架构应运而生,它将应用拆分成一系列小型、自治的服务,使得应用的开发、测试、部署和扩展更加灵活高效。Spring Cloud Alibaba 是 Spring Cloud 与 Alibaba 开源的一系列微服务组件的集合,为构建弹性可扩展的微服务架构提供了强有力的支持。
海拥
2023/08/09
4740
微服务调用链追踪中心搭建
一个完整的微服务系统包含多个微服务单元,各个微服务子系统存在互相调用的情况,形成一个 调用链。一个客户端请求从发出到被响应 经历了哪些组件、哪些微服务、请求总时长、每个组件所花时长 等信息我们有必要了
CodeSheep
2018/05/22
1.1K0
微服务学习计划——SpringCloud
在学习并掌握了众多基础框架之后,我们的项目繁杂且难以掌握,那么我们就需要开启一门新的课程,也就是我们常说的微服务架构
秋落雨微凉
2023/03/08
7200
微服务学习计划——SpringCloud
面渣逆袭:微服务三十三问,两万字图文详解!速收藏!
微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可维护。
三分恶
2023/09/16
1.7K0
面渣逆袭:微服务三十三问,两万字图文详解!速收藏!
对微服务架构设计实践中若干问题的探讨
今天讨论下在微服务架构实践中经常遇到的一些问题的思考,其中有些来源于我们自己的微服务改造项目,有些来源于客户现场微服务架构实施项目和售前方案沟通。
xcbeyond
2020/11/03
5260
对微服务架构设计实践中若干问题的探讨
SpringCloud 微服务工具集总结
特点:基于单体应用基于业务进行拆分,拆分出来每一个服务独立项目,独立项目独立部署,运行在自己的计算机进程里面,针对于拆分出来的微服务都是基于分布式和管理。
别团等shy哥发育
2023/02/25
3300
OpenFeign夺命连环9问?
前面介绍了Spring Cloud 中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。
码猿技术专栏
2023/05/01
5240
OpenFeign夺命连环9问?
微服务架构体系
分布式关注的是服务分开部署,也就是如何将单一服务部署,变为多服务部署(垂直+水平拆分)。 微服务关注的是服务拆分力度,即:一个服务要拆分到多大的维度合适
架构之家
2022/07/12
9010
微服务架构体系
SpringCloud简介与微服务架构
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
BUG弄潮儿
2021/02/03
6440
SpringCloud简介与微服务架构
微服务工程中,基础组件应用
网关作为架构的最外层服务,用来统一拦截各个端口的请求,识别请求合法性,拦截异常动作,并提供路由和负载能力,保护业务服务;这种策略与外观模式异曲同工。
知了一笑
2022/03/29
4080
微服务工程中,基础组件应用
对微服务架构设计实践中若干问题的探讨
今天讨论下在微服务架构实践中经常遇到的一些问题的思考,其中有些来源于我们自己的微服务改造项目,有些来源于客户现场微服务架构实施项目和售前方案沟通。
xcbeyond
2021/01/26
4700
对微服务架构设计实践中若干问题的探讨
基于Spring Cloud的微服务架构分析
Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本。虽然Spring Cloud时间最短,但是相比Dubbo等RPC框架,Spring Cloud提供的全套的分布式系统解决方案。
用户4283147
2022/10/27
3570
基于Spring Cloud的微服务架构分析
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
文章目录 SpringCloud 服务注册发现与服务治理 Eureka 服务调用 Feign 客户端负载均衡 Ribbon API网关 Zuul Gateway 配置中心 Config 服务之间调用的容错保护 Hystrix 链路跟踪 Sleuth+Zipkin 消息事件驱动 Stream SpringCloud Alibaba 服务注册发现和配置中心 Nacos 限流与熔断 Sentinel 分布式事务 Seata RPC服务通信 Dubbo 推荐技术选型 随着互联网、物联网的广泛应用,高
共饮一杯无
2022/11/28
1K0
微服务中的Spring Cloud和Spring Cloud Alibaba分别有哪些组件和作用,众多组件中如何做技术选型?
微服务课程之SpringCloud 概述及微服务搭建
2,本章重点 微服务的概念,特点,优点,缺点 分布式框架(微服务)的演变过程 springcloud简介和特征 springcloud组件和体系架构 搭建父子项目,编写一个微服务 3,具体内容 3.1 微服务的概念 微服务(micro service),是一种架构风格,它将一个复杂的应用拆分成多个独立自治的服务,服务与服务间通过松耦合的形式交互。这些服务都可以单独的开发,测试,部署,运行;相互协作,更好完成原来大的业务系统的所有功能。 3.2 微服务的特点,优点和缺点 1)特点 解耦:服务做了拆分,相互影响会大大降低,符合软件设计的低耦合原则。 组件化:每个服务都相当于一个独立的组件,可以进行独立升级和扩展,可以被重复使用,节省人力成本。 业务能力强:职责明确,更专注于某一个业务 自治:一个微服务就是一个独立的实体,它可以独立部署、升级,服务与服务之间通过REST等形式的标准接口进行通信,并且一个微服务实例可以被替换成另一种实现,而对其它的微服务不产生影响。 敏捷性: 微服务可以敏捷开发(迭代)非常适合。 中国扶贫办->中国移动(华为,亚信)-> 精简版上线30天上线->每隔2-3周迭代一个新功能(修复旧版本的BUG),直到整个10个月全部完成 2)优点 易于开发和部署(单个项目) 启动快 局部更新,对整体影响很小 技术不受限制 按需求伸缩 devops(develop开发 operations运维) 促进开发,运维和测试(质检QA)的协作 DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。 它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
张哥编程
2024/12/13
2330
微服务课程之SpringCloud 概述及微服务搭建
交易系统架构演进之路(三):微服务化
我们 2.0 版本的交易系统整体架构就如上图所示,划分为了行情服务、客户端服务、撮合服务、管理端服务。行情服务主要对外提供推送行情数据的 WebSocket API。撮合服务就是一个内存撮合引擎,其输入是一个定序的委托订单队列,而输出包含成交记录和其他各种事件,包括撤单成功、撤单失败、订单进入了 Orderbook 等。撮合服务如果重启,则会从 MySQL 数据库查询出所有未成交订单,重新组成 Orderbook。客户端服务的核心功能就是接收和处理客户端各种 HTTP 接口请求,管理端则是提供给系统管理人员对整个系统的用户、订单、资产、配置等进行统一查看和管理。
Keegan小钢
2020/12/29
1.9K0
SpringCloud微服务架构分析
微服务是一种架构风格,一个大型复杂软件应用应该由一个或多个微服务组成。系统中的各个微服务都可以被独立部署,每个服务仅关注于完成一件任务就行了,在所有情况下,每个任务都代表着一个小的业务能力。微服务架构其实就是一种架构风格,我们将整个项目划分为多个独立的小项目,也就是我们俗称的微服务,可以理解为每个微服务都单独处理某个功能模块,可以独立开发、测试、部署、监控和扩展,甚至可以用不同的编程语言开发它们。它有利于我们平时项目的开发,解决了一体化架构项目难以扩展,开发周期长,故障级联等问题。
全栈程序员站长
2022/07/02
5030
SpringCloud微服务架构分析
Spring Cloud的阅读类微服务实现
毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,它基于 Spring Boot 构建,充分利用了 Spring Boot 的便捷开发特性,如自动配置和起步依赖等,这次我们就基于此设计一个阅读类微服务项目,带你走完整个流程。
一杯茶Ja
2024/11/05
4723
SpringCloud微服务之微服务SpringCloud实用篇02
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
Maynor
2021/12/06
1.1K0
SpringCloud微服务之微服务SpringCloud实用篇02
初步了解SpringCloud微服务架构
针对上述问题,传统的单体结构已经不再适用于复杂度日益渐增的产品,因此一种新的软件架构提供了解决方案 —— 微服务 。
程序员Leo
2023/08/07
1.1K0
初步了解SpringCloud微服务架构
Spring Cloud最全面试题整理,全是干货
尽管也是遵循模块化开发,但最终它们会打包并部署为单体式应用。例如Java应用程序会被打包成WAR,部署在Tomcat或者Jetty上。
小熊学Java
2023/07/16
8.8K0
Spring Cloud最全面试题整理,全是干货
相关推荐
构建弹性可扩展的微服务架构:基于Spring Cloud Alibaba 的实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档