微服务之eureka+zuul的基本部署

    由于前段时间遇到工作危机差点被开让我意识到技术的重要性,所以在公司架构师的建议下开始了解和学习微服务,首先学习的就是zuul网关和eureka注册中心,因为白天工作开发量比较多,所以只能晚上抽空学习,如今终于可以简单的部署一套环境并成功运行起来了,虽然这些对于老手来说可以算是皮毛了,但是对我来说还是值得高兴的。

    关于zuul和eureka的相关介绍我就不多说了一搜一大把,直接上配置。

    1.首先创建Spring boot。

    87e9297882fda9026b179ecffe2963498ad.jpg

    下一步修改项目名

    188a6d5a86e7d809a8ba9e0af42490b4ba3.jpg

    然后一直下一步就可以了,中间选择组件的时候我直接跳过,创建后在pom里加也可以。

    2.引入相关依赖

    eureka:

 <!-- 服务端 ->
 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>

    zuul:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <!-- 客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    dome1、dome2:

        <!-- 客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

 3.启动类注解

    eureka:

@EnableEurekaServer

    zuul:

@EnableZuulProxy

    dome1、dome2:

@EnableEurekaClient

4:配置文件

    eureka:application.properties

server.port=8080
eureka.instance.hostname=127.0.0.1
# 是否向服务中心注册自己
eureka.client.register-with-eureka=false
# 是否检索服务
eureka.client.fetch-registry=false
eureka.instance.prefer-ip-address=true
# 服务注册中心的配置内容,指定服务注册中心的位置
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

    zuul:application.yml

server:
  port: 8084 #服务端口
spring:
  application:
    name: api-zuul #服务名
eureka:
  client:
    registry-fetch-interval-seconds: 5 # 获取服务列表的周期:5s
    service-url:
      defaultZone: http://127.0.0.1:8080/eureka #eureka地址
zuul:
  prefix: /api # 添加路由前缀所有访问路由加这个前缀
  retryable: true #是否开启重试功能
  routes:
    api: # 随便起
      path: /service/** #访问地址以service请求的都会转发到service-provider-A
      serviceId: service-provider-A # 如果两个服务名都是以service-provider-A注册到eureka,zuul会随机转发

dome1、dome2:application.properties(端口不同,服务名相同)

# 注册中心的注册地址
eureka.client.service-url.defaultZone=http://127.0.0.1:8080/eureka/
# 服务名称--调用的时候根据名称来调用该服务的方法
spring.application.name=service-provider-A
server.port=8081

以上配置为负载均衡的配置,反向代理可将zuul中routes下的配置新增一个名,path和serviceid为另一个服务名就可以。

dome1、dome2需要各自创建一个测试类

package com.example.eurekaclientdemo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RequestMapping("/users")
@RestController
public class UserController {

    @GetMapping("/{name}")
    public Map<String,Object> getUser(@PathVariable("name") String userName) {
        Map<String,Object> data = new HashMap<>();
        data.put("id",userName);
        data.put("from","provider-A-1");
        return data;
    }

}
package com.example.eurekaclient2demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RequestMapping("/users")
@RestController
public class UserController {

    @GetMapping("/{name}")
    public Map<String,Object> getUser(@PathVariable("name") String userName) {
        Map<String,Object> data = new HashMap<>();
        data.put("id",userName);
        data.put("from","provider-A-2");
        return data;
    }

}

以上配置完成后,依次启动eureka、zuul、dome1、dome2。在浏览器输入http://127.0.0.1:8080后查看注册的服务

2ec491a3e091dc7cfea84ac49bc5557c458.jpg

然后在浏览器输入http://127.0.0.1:8084/api/service/users/sdffsd,需要刷新来看效果。

d854445c5b7dc80c6bb7c010b654555599f.jpg

318c9901e7ba76f2f3f03217f0467ad8ec1.jpg

以上就是本篇所讲的内容,第一次写博客,主要用于记录学习所得,内容可能略显简单 如果有人看到了发现有什么问题希望给予指正,谢谢。

转载于:https://my.oschina.net/u/3734470/blog/3074552

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微服务从设计到部署的过程通常包括以下几个步骤: 第一步是需求分析和架构设计。在设计微服务之前,需要对需求进行全面的分析和理解。通过与利益相关方沟通和讨论,确定每个微服务的功能和边界。这些功能和边界可以帮助我们定义出一个明确的架构,包括服务的划分、服务之间的通信方式等等。 第二步是选择适合的技术栈。根据需求和架构设计,选择适合的编程语言、开发框架和其他相关技术。常用的微服务框架和组件有Spring Boot、Netflix OSS(如EurekaZuul等)、Docker等。同时,也需要考虑到系统性能、可扩展性、可维护性等方面的需求。 第三步是实现微服务。根据需求和架构设计,开始编写代码并逐步实现每个微服务的功能。在开发过程中,需要注意模块间的解耦和模块的单一职责,遵循面向微服务的设计原则。同时,进行适当的单元测试和集成测试,确保功能的正确实现。 第四步是部署和运行微服务。将每个微服务打包成可运行的镜像,使用容器技术(如Docker)进行部署。可以选择使用容器编排工具(如Kubernetes)对容器进行管理和调度。同时,也需要配置和管理服务注册与发现、服务网关等基础设施组件,确保微服务的正常运行。 第五步是监控和运维。使用监控工具对微服务进行监控,例如收集日志、指标和异常信息,及时发现和解决问题。同时,进行容量规划和负载均衡,确保系统的高可用性和性能。 第六步是持续集成和持续部署。使用自动化工具和流程,将代码集成和部署到生产环境中,实现快速的交付和反馈。可以使用持续集成和持续部署工具,例如Jenkins、GitLab等。 通过以上步骤,我们可以完成微服务从设计到部署的全过程。这个过程需要多个团队的协作和沟通,同时也需要关注系统的可维护性和可扩展性,以确保微服务架构的成功实施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值