微服务的服务拆分

一、服务拆分的三个维度

三个维度拆分后,微服务的架构图就如下图所示:

  • API GATEWAY服务网关:

身份认证、权限管理、服务动态路由、数据的聚合(比如房产详情页就有详情、评论、推荐,这些都属于不同的服务,这些我们就需要在服务网关中去做)

Service Register:注册中心 服务的注册与发现

  注册与发现:如果是在单体架构中,添加一个实例,一般是在前端反向代理中如Nginx中添加一个实例服务器ip端口。

而在微服务中这种方式就很难满足多服务的架构,一方面频繁的修改Nginx配置文件极易出错,引起整个系统的故障。

另一方面,服务消费者要记录大量url和ip的配置,管理这些配置非常繁琐,很难理清他们之间的依赖关系。而且要增加软硬件的投入。

如果在客户端配置,就减少了这种投入。服务的注册与发现在客户端负载均衡提供了可能。

  • 微服务的数据库可以根据每个服务的特点选择合适的数据库,比如Order数据量大,可以选择Hbase数据库。

    也可以根据自己擅长的技术栈来选择。 

二、拆分的原则和步骤

1.拆分的原则

评价架构好坏的原则:可以用变化的成本来衡量。架构的目的就是管理复杂性、易变性和不确定性。

这样就能在系统演化进程中一部分系统的改变不会影响另一部分的系统。

  • 高内聚低耦合,服务粒度适中
  • 以业务模型切入
  • 演进式拆分

2.拆分的步骤

  • 分析业务模型——弱耦合在一起,高内聚
  •  确定服务边界

1)分析业务模型

推荐是对房产进行推荐,所以推荐依赖房产;房产的产权属于某个用户,所以房产依赖用户

经济人属于某个经济机构;经济人也是一个用户

评论可以针对博客,也可以针对房产

评论和博客都依赖于用户

用户、经济人、经济机构是练习比较紧密的,所以可以放到一个服务当中,叫用户服务。

推荐目前只是针对房产进行推荐,我们可以将推荐和房产放到一起,叫房产服务。

评论和博客放到一起,我们叫评论服务。

最后产生的依赖关系就是:

评论服务依赖于用户服务

房产服务依赖于用户服务和评论服务

用户服务作为底层服务不依赖于其他服务

2)确定服务边界

评论服务和用户服务的共享模型是用户

评论服务需要获取用户的头像、名称等信息,用户服务提供接口给评论服务访问。

用户服务和房产服务的共享模型是经济人

房产服务需要从用户服务那获取经济人的一些信息,包含头像 email 联系方式等,并不需要密码等信息,用户服务提供接口给房产服务访问。

和单体相比,各个数据库的表是没有变化的,但是将数据库分成了三个

原文地址:https://www.cnblogs.com/xiangkejin/p/8981997.html

时间: 2024-10-02 22:13:45

微服务的服务拆分的相关文章

微服务化之服务拆分与服务发现

本文章为<互联网高并发微服务化架构实践>系列课程的第六篇 前五篇为: 微服务化的基石--持续集成 微服务的接入层设计与动静资源隔离 微服务化的数据库设计与读写分离 微服务化之无状态化与容器化 微服务化之缓存的设计 一.服务拆分的前提 说到微服务,服务拆分是绕不过去的话题,但是微服务不是说拆就能拆的,有很多的前提条件,需要完成前面几节所论述的部分. 首先要有一个持续集成的平台,使得服务在拆分的过程中,功能的一致性,这种一致性不能通过人的经验来,而需要经过大量的回归测试集,并且持续的拆分,持续的演

初见微服务之服务注册与发现

什么是服务注册与发现 微服务将传统的"巨石"应用拆分成一个一个的组件应用,每个组件应用提供特定的服务,可以是一个,也可以是多个,并且组件所含服务应该是可以动态扩展的,随着时间推移.系统进化,可任意拆分.合并. 组件化应用和颗粒化的服务,遍布在系统的各个角落,由不同的项目成员进行维护,微服务的核心是化整为零.各司其职,这就要求开发人员不得操作其业务或服务范围以外的数据模型等资源,只能通过接口的访问,使用某一服务. 由于服务的跨度很大(公司很大的情况下).数量很多(数以百计甚至更多),为保

Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud0 CloudFoundry.S

Spring Cloud微服务架构—服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud0 CloudFoundry.

024.微服务之服务注册与发现(基于kubernetes / SpringCloud)

微服务 微服务是一种架构模式,一种分布式的架构风格. 顾名思义,micro service,将一个庞大的单体应用拆分成若干个“微小”的服务,服务间通过进程通讯完成原本在单体应用中的调用. 其中必要的六个基本技术为: 1.服务注册与发现: 2.进程间通信: 3.负载均衡: 4.分布式配置中心: 5.熔断器: 6.网关路由. 基于k8s.springcloud的服务注册与发现对比 k8s并没有引入新的注册中心,使用的就是k8s的kube-dns. k8s将Service的名称当做域名注册到kube-

java版b2b2c社交电商Spring Cloud构建微服务架构-服务注册与发现

Spring Cloud简介Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud0 CloudFoundry.S

聊聊微服务的服务注册与发现

摘要: 一个好的服务注册发现中间件,应该是能完整地满足服务开发和治理的基础功能,然后才是性能和高可用.如果没有想清楚前面的功能,再高的可用性和性能都是浮云.最后,安全也同样重要.下面将从 服务注册.服务发现.容灾和高可用三个大方面来回答这些问题的主流做法. 引言 聊起微服务的服务注册与发现,很多人立马就会脱口而出 zk.etcd.consul.eureka 这些组件,进而聊到 CAP 如何取舍,性能如何,高可用和容灾是怎么实现的. 在这之前,站在组件使用者的角度,我想先问这么几个问题: 注册的

不是后端也应该知道的「 web 服务、子服务、服务的部署」

web 服务是什么 1. 定义 我们先来看一个很通俗的定义,来自于wiki. Web service 指的是,一个平台通过 web 向其它平台来提供服务. 更专业一点的定义怎么说呢?我们来看一下 W3C 对 web service 的定义. Web service 是一个软件系统,使得不同机器可以在网络间进行互动操作. 2. 要素 想要实现一个平台在网络间调用另一个平台的服务,至少需要明确三点: 如何将平台上的代码作为服务暴露出去供其它平台调用: 使用什么样的网络协议通信: 使用什么样的格式作为

发布Hessian服务作为服务内部基础服务

摘要:Hessian经常作为服务内部RPC工具来使用,速度快效率高.重构代码的核心思想就是把共用的代码段提出来,使代码结构优化:架构设计类似,把基本的共用的服务提出来,使架构优化.下面讲述一下我在具体应用中使用Spring3.2.4在Tomcat7.0.47下发布Hessian4.0.37服务的过程. 关键词:Spring, Hessian, JAVA, 架构设计, Hibernate, Tomcat Hessian经常作为服务内部RPC远程过程调用工具来使用,速度快效率高,我们的项目也不例外的