精华内容
下载资源
问答
  • 本课程主要内容是介绍如何使用SpringCloud+Consul+Docker相关技术快速搭建微服务架构: 1、SpringCloud技术栈:统一路由(Zuul)、链路日志跟踪(Sleuth+Zipkin+MQ+ES)、负载均衡(Ribbon)、断路器(Hystrix)、防...
  • 刚看了《如何快速搭建微服务架构》的文章,作者分析对比传统单体应用,微服务架构的主要是上手难和运维难。并给出了上手微服务的步骤如下。 使用微服务简单模式进行开发的四个步骤: 第一步:沿用组织中现有的技术...

    刚看了《如何快速搭建微服务架构》的文章,作者分析对比传统单体应用,微服务架构的主要是上手难和运维难。并给出了上手微服务的步骤如下。

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

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

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

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

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

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

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

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

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

     注册中心、服务发现、负载均衡

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

    展开全文
  • Spring Cloud Alibaba +Nacos搭建微服务架构集成nacos1. 启动nacos server2. 微服务客户端集成spring cloud alibaba +nacos server1)在pom.xml文件中添加依赖2)在application.properties|application.yml| ...

    1. Spring Cloud Alibaba 简介

       Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eureka server ,spring cloud config等组件的目标和意图,旨在能够更简便快速地去管理服务、注册服务、管理配置。

    2. Spring Cloud Alibaba +Nacos搭建微服务架构

    集成nacos

    1. 启动nacos server

    nacos 官方学习文档: https://nacos.io/zh-cn/docs/quick-start.html
    下载nacos: https://github.com/alibaba/nacos/releases
    也可以使用如下命令安装并编译项目:

    git clone https://github.com/alibaba/nacos.git
    cd nacos/
    mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
    

    项目构建完毕后,会在\nacos\distribution\target\ 目录下生成对应的包:
    在这里插入图片描述

    在这里插入图片描述

    进入到/nacos/bin 目录下 D:\Program Files\nacos\distribution\target\nacos-server-1.4.2-SNAPSHOT\nacos\bin:
    在这里插入图片描述
    执行命令 startup.cmd -m standalone, 以单例模式启动nacos服务器:

    cd D:\Program Files\nacos\distribution\target\nacos-server-1.4.2-SNAPSHOT\nacos\bin
    d:
    startup.cmd -m standalone
    

    启动成功后,会出现如下logo:
    在这里插入图片描述
    访问: http://192.168.31.166:8848/nacos/index.html, 用户名和密码都是nacos,登录成功后,就可以看到如下的nacos首页:
    在这里插入图片描述

    2. 微服务客户端集成spring cloud alibaba +nacos server

      自己建的项目相当于一个微服务客户端,在本例中就是一个nacos客户端,要想将服务注册到nacos server中,我们需要做三件事

    1) 在pom.xml文件中添加依赖

    nacos客户端依赖:

    <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    pom.xml文件完整配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.exam.springcloud</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>spring-cloud-alibaba</name>
        <description>project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
            <spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!--引入nacos client依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
    
        </dependencies>
    
    
        <!--引入spring cloud alibaba 的下载地址-->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring.cloud.alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
    
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    
    2) 在application.properties|application.yml| bootstrap.yml(选一即可)添加nacos客户端配置

    在项目中添加properties配置, 各配置的作用和含义类似于eureka的配置, 如下作出解释:

    #指定微服务服务名称
    spring.application.name= user
    #指定nacos服务地址
    spring.cloud.nacos.server-addr=localhost:8848
    #指定注册中心地址
    spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
    #暴露所有web端点
    management.endpoints.web.exposure.include=*
    
    3) 开启服务发现注册

    在应用的启动类上添加注解 @EnableDiscoveryClient

    通过以上步骤添加好配置后,接下来启动服务,如果注册成功了,会在控制板上看到新建的user服务已经注册到nacos上去。
    在这里插入图片描述
    再次查看nacos服务列表,可以看到user服务已经注册到nacos 注册中心上去。
    在这里插入图片描述

    如果还有其他服务,那么采用相同的方式进行注册即可。

    3. 微服务的使用

       由于Spring Cloud Alibaba是基于Spring boot进行集成的,服务间的调用仍然可以使用RestTemplate+ribbon进行调用,或者使用Feigin组件来实现服务间的调用, 以下文章能够帮助理解服务发现、服务注册以及服务调用。

    文章列表:
    Eureka服务发现注册详解
    使用Ribbon+RestTemplate来实现微服务间的调用
    从零开始搭建Feign客户端

    4. 使用nacos管理配置

    1) 新建一个命名空间

       命名空间的作用相当于是环境的分离,其作用类似于spring cloud config, 不同的命名空间配置是隔离的。
    在这里插入图片描述

    然后在该命名空间下添加配置 ,注意, 配置里最好不要有中文:
    在这里插入图片描述

    在这里插入图片描述

    2)在项目中引入命名空间下的配置

      修改项目的配置如下, namespace和group分别为nacos面板里显示的:
    在这里插入图片描述

    # 读取配置的分组
    spring.cloud.nacos.config.group=DEFAULT_GROUP
    # 指定读取文件后缀
    spring.cloud.nacos.config.file-extension=properties
    # 指定读取文件的前缀
    spring.cloud.nacos.config.namespace=c3a19cd1-6d71-428a-82ba-810e6279d3bf
    # 指定应用名称
    spring.application.name=user
    # 指定读取文件的具体环境
    spring.profiles.active=dev
    
    

      在pom.xml文件中添加nacos config依赖:

    <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    

    再次启动项目,查看服务是否重新注册到nacos!
    在这里插入图片描述
    由下可以发现服务再次注册到nacoe, 远程配置生效!
    在这里插入图片描述

    展开全文
  • SpringCloud+Consul+Docker搭建微服务架构 互联网8年...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-SpringCloud+Consul+Docker搭建微服务架构-Java

    学习有效期:永久观看

    学习时长:455分钟

    学习计划:8天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:王洪叶

    技术经理

    讲师介绍:互联网8年多技术经验,担任过技术经理、架构师等角色,擅长微服务和分布式架构设计,懂业务更懂技术。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    本课程主要内容是介绍如何使用SpringCloud+Consul+Docker相关技术快速搭建微服务架构,讲解的技术内容如下:
    SpringCloud组件角色:统一路由(Zuul)、链路日志跟踪(Sleuth+Zipkin+MQ)、负载均衡(Ribbon)、断路器(Hystrix)、防刷限流(Ratelimit)等的配置与使用,并从底层介绍它们的运作原理,辅助读者更好的运用它们。

    服务注册与配置中心:采用Consul实现服务注册中心和配置中心(kv),替代了早期使用Eureka及Config的繁琐实现。

    服务应用的部署策略:采用Docker容器云技术编排和部署业务服务及三方服务,并构建访问安全的Registry镜像仓库。

    课程案例技术栈构建:课程案例基于SSM(Spring + SpringMVC + MyBatis)技术栈构建服务提供者Web应用,并在服务消费者实现RxJava聚合查询多个服务提供者的实现。

    高可用以及安全处理:基于docker实现consul、zookeeper及kafka跨节点集群搭建,并为业务服务配置多个实例,以提供高可用支持,同时,结合了nginx实现集群和服务的负载均衡,以及为consul和zipkin内置的web访问提供auth_basic安全认证;对于RateLimit选用的kv组件,建议选用redis集群高可用实现。

    最后,针对本课程内容,梳理了几个常见求职面试题,供读者朋友学习参考。

     

    「课程学习目录」

    1.场景、选型及案例
    2.架构总览-注册配置中心Consul及路由网关Zuul
    3.架构总览-负载均衡Ribbon及断路器Hystrix
    4.架构总览-Ratelimit工作原理
    5.环境准备-服务器及Docker
    6.环境准备-ElasticSearch及Zipkin搭建
    7.环境准备-镜像私服Registry搭建
    8.环境准备-Consul、Kafka及Nginx搭建
    9.SSM构建商品服务提供者
    10.SSM商品服务-MyBatis相关配置
    11.SSM商品服务-业务逻辑实现
    12.SSM商品服务-API接口测验
    13.SSM用户服务提供者
    14.SSM订单服务提供者
    15.Consul服务注册-SSM服务提供者注册
    16.商品服务消费者注册与发现
    17.订单服务消费者注册发现与聚合查询
    18.Zuul路由服务构建、路由配置及容错回退
    19.Zuul路由服务-集成Ratelimit实现限流防刷
    20.Sleuth+Zipkin+Kafka链路日志跟踪服务构建
    21.服务调度链路日志跟踪配置及测验
    22.Consul作为服务配置中心
    23.Docker基础知识
    24.基于Dockerfile构建镜像
    25.Compose服务编排
    26.高可用集群环境编排-Consul及Kafka集群
    27.高可用集群-Nginx负载及服务注册与发现
    28.Redis集群搭建及RateLimit使用
    29.安全处理-Consul ACL开启及节点Encrypt加密
    30.安全处理-Auth_Basic身份验证及网关服务负载
    31.课程总结和一些面试题梳理

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,8天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Java知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    学会使用SpringCloud搭建微服务架构

    学会Consul作为服务注册以及配置中心

    学会Docker容器云编排和部署服务应用

    进一步提升你的职业技术能力以及等级

     

    展开全文
  • 使用spring cloud+dotnet core搭建微服务架构:服务治理

    背景

    公司去年开始使用dotnet core开发项目。公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代理,项目最终上线。但是这远远没达到微服务的要求,其中服务治理,断路器都没有。我个人理解,我们谈微服务实际上更多的是谈服务治理这块东西,至于各个的服务只是微服务中的应用而已。一次偶然的机会发现了java的spring cloud这套框架,而且支持dotnet core集成(Steeltoe OSS)。所以目前我们的项目架构是spring cloud搭建底层微服务框架,dotnet core来编写业务逻辑。

    spring cloud

    spring cloud是java平台提供的一套解决方案,目前市面上来说可能不是最好的微服务解决方案,但是一定是功能最齐全最全的解决方案。提供了一些微服务的基础功能,包括服务治理、负载均衡、断路器、配置中心、API网关等等。

    服务治理

    关于服务治理这块东西,网上太多太多的资料和原理。相信大家也看了很多,但是如何应用到实际的项目场景,为什么要这样做呢?传统的项目,服务与服务之间的调用都是通过URL来访问,如果是集群那么通过一个负载均衡地址来访问,增加或者减少机器都是通过维护负载均衡列表的IP地址来实现。微服务架构下,分散成了N个服务,每个服务又是一个集群,对于一个大项目来说,维护这些配置是非常头疼的。笔者曾经在某知名互联网公司工作过,公司最累最背锅的就是运维团队,基本24小时都在应付各个团队的部署上线工作以及各种配置的维护,而且还经常出错挨骂。那么服务治理就出现在这种应用场景之中,运维工程师不用再维护各个负载均衡节点,由服务中心去统一处理。举个简单例子,一个电商网站,分解成N个服务,其中有一个用户服务,有一个订单服务,用户服务需要调用订单服务,而订单服务是一个集群,对于用户中心来说他只需要知道访问订单中心即可,至于具体访问订单中心的哪台机器由服务中心来调配。

    搭建服务治理平台

    1. java开发环境和IDE使用请自行百度,笔者java开发的ide使用的intellij idea。

    2. 创建一个srping boot项目,项目名称service-center,添加spring cloud的依赖

      <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>
    3. 添加@EnableEurekaServer注解

      @EnableEurekaServer@SpringBootApplicationpublic class ServiceCenterApplication {}
    4. 设置应用程序的端口和名称

      spring.application.name=service-center
      server.port=5000
    5. 启动项目,在浏览器输入http://localhost:5000/

    注册服务

    1. 使用vs创建一个dotnet core web api程序

    2. 使用nuget添加Pivotal.Discovery.Client库

      <PackageReference Include="Pivotal.Discovery.Client" Version="1.1.0" />

      3.Program.cs 设置一个端口

      public static void Main(string[] args)    {    
         var host = new WebHostBuilder()            .UseKestrel()            .UseContentRoot(Directory.GetCurrentDirectory())            .UseIISIntegration()            .UseStartup<Startup>()            .UseApplicationInsights()            .UseUrls("http://*:8010")            .Build();        host.Run();    }
    3. Startup.cs

       public void ConfigureServices(IServiceCollection services)
          {
              services.AddDiscoveryClient(Configuration);        // Add framework services.
              services.AddMvc();
          }
          public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
          {
              loggerFactory.AddConsole(Configuration.GetSection("Logging"));
              loggerFactory.AddDebug();
      
              app.UseMvc();
              app.UseDiscoveryClient();
          }
    4. appsettings.json

      {
      "Logging": {
          "IncludeScopes": false,
          "LogLevel": {
              "Default": "Warning"
          }
      },
      "spring": {
          "application": {
              "name": "serviceone"
          }
      },
      "eureka": {
          "client": {
              "serviceUrl": "http://loclhost:5000/eureka/",
              "shouldFetchRegistry": false,
              "shouldRegisterWithEureka": true 
          },
          "instance": {
              "port": 8010
          }
      }
      }

      如果是团队开发,"shouldRegisterWithEureka"设置成false,防止本地环境注册到开发环境

    5. 启动程序,再次访问http://localhost:5000/发现已经注册到服务中心了

    6. 同样的方式我们再创建一个ServiceTwo的项目,修改programe.cs和appsettings.json文件,其它不变

      public static void Main(string[] args)    {        var host = new WebHostBuilder()
                  .UseKestrel()
                  .UseContentRoot(Directory.GetCurrentDirectory())
                  .UseIISIntegration()
                  .UseStartup<Startup>()
                  .UseApplicationInsights()
                  .UseUrls("http://*:8011")
                  .Build();
      
              host.Run();
      {
      "Logging": {
          "IncludeScopes": false,
          "LogLevel": {
              "Default": "Warning"
          }
      },
      "spring": {
          "application": {
              "name": "servicetwo"
          }
      },
      "eureka": {
          "client": {
              "serviceUrl": "http://loclhost:5000/eureka/",
              "shouldFetchRegistry": false,
              "shouldRegisterWithEureka": true 
          },
          "instance": {
              "port": 8011
          }
      }
      }
    7. 再次访问http://localhost:5000/,发现ServiceOne和ServiceTwo都已经注册到服务中心了

    后记

    这样一个简单的服务治理平台就搭建出来了,我们通过spring cloud来创建了一个服务中心,然后通过dotnet core创建了2个服务注册到了服务中心,但是这些离微服务还差的远.服务之间怎么相互调用呢?集群模式怎么处理呢?微服务的统一API网关呢?留下这些问题,且听下回分解。

    所有代码均上传github。
    求推荐,你们的支持是我写作最大的动力,我的QQ群:328438252,交流微服务。

    参考资料

    java部分

    • spring cloud文档

    • 纯洁大神spring cloud系列

    .net部分

    • SteeltoeOSS文档

    • SteeltoeOSS源码

    原文地址:http://www.cnblogs.com/longxianghui/p/7561259.html

    展开全文
  • 手把手教你使用spring cloud+dotnet core搭建微服务架构 服务治理(-)
  • 需求:业务量升级,老大要求使用nacos微服务架构,技研玩了一下,从搭建到使用一整套流程 1、首先需要搭建Nacos-server nacos搭建环境要求,如下: 64位操作系统,支持 Linux/Unix/Mac/Windows 64 位 JDK 1.8+ ...
  • spring cloud+.net core搭建微服务架构:服务发现 最近在跟随着园区内的这个博客做服务发现的时候,发觉在vs 上调整了端口后还是无法实现通过,order 服务访问product,一访问 就抛出错误。经过近乎两周的时间 ...
  • 当设计一个服务系统较为复杂时,我们可能需要将其拆分为若干个子系统来进行管理,这时就需要一个好的微服务架构来帮助我们进行自动管理了。 (本文将使用 IntelliJ IDEA 进行演示)
  • 前言上篇文章《手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)》实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载...
  • 搭建一套微服务架构的,我个人觉得必须如下模块: config-service api-gateway circuit-breaker registry monitor ***-service 第一步构建config-service,登录http://start.spring.io/,选择gradle、maven...
  • 近几年,微服务架构在大量技术社区迅速蹿红,被认为是 IT 软件架构的未来方向。在业务模型不完善,超大规模流量的冲击的情况下,许多企业纷纷抛弃了传统研发模式,拥抱微服务。微...
  • 本课程主要内容是介绍如何使用SpringCloud+Consul+Docker相关技术快速搭建微服务架构: 1、SpringCloud技术栈:统一路由(Zuul)、链路日志跟踪(Sleuth+Zipkin+MQ+ES)、负载均衡(Ribbon)、断路器(Hystrix)、防...
  • 作为系统各微服务的管理者,eureka服务器在spring boot下只需要少量配置即可开启 根项目 build.gradle文件如下: plugins { id 'org.springframework.boot' version '2.1.7.RELEASE' id 'io.spring.dependency-...
  • 1.为什么用微服务 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,里面包含DAO,Service、UI等所有的逻辑。不幸的是,这种简单的单元有很大的局限性。应用程序随着业务需求的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,789
精华内容 1,515
关键字:

搭建微服务架构