微服务框架(一):服务拆分和服务调用

本文介绍了微服务架构的设计原则,包括何时进行拆分,以及如何根据高内聚和低耦合原则进行拆分。重点讲解了使用Nacos作为注册中心和服务发现工具,以及如何通过SpringCloud和OpenFeign实现服务之间的远程调用和负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。
在这里插入图片描述

微服务拆分

什么时候拆分?

  • 创业型项目:先采用单体架构,快速开发,快速试错。随着规模扩大,逐渐拆分。
  • 确定的大型项目:资金充足,目标明确,可以直接选择微服务架构,避免后续拆分的麻烦。

怎么拆分?

从拆分目标来说,要做到:

  • 高内聚:每个微服务的职责要尽量单一,包含的业务相互关联度高、完整度高。
  • 低耦合:每个微服务的功能要相对独立,尽量减少对其它微服务的依赖。

从拆分方式来说,一般包含两种方式:

  • 纵向拆分:按照业务模块来拆分
  • 横向拆分:抽取公共服务,提高复用性

黑马商城

以黑马商城为例,原来所有业务都在一个单体项目里,现在我们可以把他拆分为以下五个微服务

  • 用户服务
  • 商品服务
  • 订单服务
  • 购物车服务
  • 支付服务

下面是拆分完毕的项目结构,这里因为测试了负载均衡,所以启动了两个商品微服务实例
在这里插入图片描述

在这里插入图片描述

注册中心

在微服务远程调用的过程中,包括两个角色:

  • 服务提供者:提供接口供其它微服务访问,比如item-service
  • 服务消费者:调用其它微服务提供的接口,比如cart-service

在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念

我们这里就采用了Nacos(Alibaba公司出品,目前被集成在SpringCloudAlibaba中)

导入数据库

首先需要将nacos所需要的sql文件导入数据库(这里以mysql为例)

在这里插入图片描述

配置数据库

然后创建一个配置文件在/root/nacos/custom.env

注意这里其实就是在配置nacos的数据库

PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=192.168.88.188
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=123
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

创建Nacos容器

使用docker创建nacos容器

docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

启动完成后就可以访问nacos登录页:http://IP:8848/nacos/,账号密码都是nacos

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值