微服务架构:Spring-Cloud

什么是微服务?

微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库。 比

如:项目里面有User模块和Power模块,但是User模块和Power模块并没有直接关系,仅仅只是一些数据需要交

互,那么就可以吧这2个模块单独分开来,当user需要调用power的时候,power是一个服务方,但是power需要

调用user的时候,user又是服务方了, 所以,他们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这

时候,微服务的概念就出来了。

经典问题:微服务和分布式的区别

谈到区别,我们先简单说一下分布式是什么,所谓分布式,就是将偌大的系统划分为多个模块(这一点和微服务很

像)部署到不同机器上(因为一台机器可能承受不了这么大的压力或者说一台非常好的服务器的成本可能够好几台

普通的了),各个模块通过接口进行数据交互,其实 分布式也是一种微服务。 因为都是吧模块拆分开来变为独立

的单元,提供接口来调用,那么 他们本质的区别在哪呢? 他们的区别主要体现在“目标”上, 何为目标,就是你这

样架构项目要做到的事情。 分布式的目标是什么? 我们刚刚也看见了, 就是一台机器承受不了的,或者是成本问

题 , 不得不使用多台机器来完成服务的部署, 而微服务的目标 只是让各个模块拆分开来,不会被互相影响,比如

模块的升级亦或是出现BUG等等...

讲了这么多,可以用一句话来理解:分布式也是微服务的一种,而微服务他可以是在一台机器上。

微服务与Spring-Cloud的关系(区别)

微服务只是一种项目的架构方式,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring-Cloud便是对这

种技术的实现。

微服务一定要使用Spring-Cloud吗?

我们刚刚说过,微服务只是一种项目的架构方式,如果你足够了解微服务是什么概念你就会知道,其实微服务就算

不借助任何技术也能实现,只是有很多问题需要我们解决罢了例如:负载均衡,服务的注册与发现,服务调用,路

由。。。。等等等等一系列问题,所以,Spring-Cloud 就出来了,Spring-Cloud将处理这些问题的的技术全部打包

好了,就类似那种开袋即食的感觉。。

Spring-Cloud项目的搭建

因为spring-cloud是基于spring-boot项目来的,所以我们项目得是一个spring-boot项目,至于spring-boot项目,

这节我们先不讨论,这里要注意的一个点是spring-cloud的版本与spring-boot的版本要对应下图:

在我这里我的版本是这样的

spring-boot:

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>.RELEASE</version>

  </parent>

spring-cloud:

<dependencyManagement>

    <dependencies>

      <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-dependencies</artifactId>

        <version>Finchley.SR2</version>

        <type>pom</type>

        <scope>import</scope>

      </dependency>

    </dependencies>

  </dependencyManagement>

当你项目里面有这些依赖之后,你的spring cloud项目已经搭建好了(初次下载spring-cloud可能需要一点时间)

Spring-Cloud组件:

eureka:

eureka是什么?

eureka是Netflix的子模块之一,也是一个核心的模块,eureka里有2个组件,一个是EurekaServer(一个独立的项

目) 这个是用于定位服务以实现中间层服务器的负载平衡和故障转移,另一个便是EurekaClient(我们的微服务)

它是用于与Server交互的,可以使得交互变得非常简单:只需要通过服务标识符即可拿到服务。

与spring-cloud的关系:

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(可以对比Zookeeper)。

Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可

以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以

通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

角色关系图:

如何使用?

在spring-cloud项目里面加入依赖:

eureka客户端:

<dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

    </dependency>

eureka服务端:

<dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

    </dependency>

eureka服务端项目里面加入以下配置:

s

erver:

port: 

eureka:

server:

 enable-self-preservation: false  #关闭自我保护机制

 eviction-interval-timer- #设置清理间隔(单位:毫秒 默认是60*)

instance:

 hostname: localhost

client:

 registerWithEureka: false #不把自己作为一个客户端注册到自己身上
fetchRegistry: false  #不需要从服务端获取注册信息(因为在这里自己就是服务端,而且已经禁用自己注

册了)

 serviceUrl:

  defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

当然,不是全部必要的,这里只是把我这里的配置copy过来了
然后在spring-boot启动项目上 加入注解:@EnableEurekaServer
就可以启动项目了

@EnableEurekaServer

@SpringBootApplication

public class AppEureka {

  public static void main(String[] args) {

    SpringApplication.run(AppEureka.class);

 }

}

如果看见这个图片,那么说明你就搭建好了:

这个警告只是说你把他的自我保护机制关闭了

eureka客户端配置:

server:
port:
eureka:
然后在客户端的spring-boot启动项目上 加入注解:@EnableEurekaClient 就可以启动项目了 这里就不截图了我们
直接来看效果图:
这里我们能看见 名字叫server-power的(图中将其大写了) id为 power-1的服务 注册到我们的Eureka上面来了
至此,一个简单的eureka已经搭建好了。
当然 这篇咱们先讲应用, 源码文章以后再更新, 或者大家腾讯课堂搜鲁班学院 我会在里面免费的公开课上讲到
Spring Cloud 以及Eureka的源码
client:
 serviceUrl:
   defaultZone: http://localhost:3000/eureka/  #eureka服务端提供的注册地址 参考服务端配
置的这个路径
instance:
 instance-id: power- #此实例注册到eureka服务端的唯一的实例ID
 prefer-ip-address: true #是否显示IP地址
 leaseRenewalIntervalInSeconds:  #eureka客户需要多长时间发送心跳给eureka服务器,表明它仍
然活着,默认为30 秒 (与下面配置的单位都是秒)
 leaseExpirationDurationInSeconds:  #Eureka服务器在接收到实例的最后一次发出的心跳后,需要
等待多久才可以将此实例删除,默认为90秒
spring:
application:
 name: server-power #此实例注册到eureka服务端的name

然后在客户端的spring-boot启动项目上 加入注解:@EnableEurekaClient 就可以启动项目了 这里就不截图了

我们直接来看效果图:

这里我们能看见 名字叫server-power的(图中将其大写了)
id为 power-1的服务 注册到我们的Eureka上面来了

至此,一个简单的eureka已经搭建好了。

当然 这篇咱们先讲应用, 源码文章以后再更新, 如果大家需要微服务架构方面以及更多资料,大家可以添加我的Java高级交流群:901439810,欢迎你的交流

当下最流行的微服务与spring cloud,你搞清楚了吗?的更多相关文章

  1. 微服务与Spring Cloud概述

    微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...

  2. [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务

    微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST,  ...

  3. 2.微服务开发框架——Spring Cloud

                     微服务开发框架—Spring Cloud 2.1. Spring Cloud简介及其特点 简介: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见 ...

  4. 消息驱动微服务:Spring Cloud Stream

    最近在学习Spring Cloud的知识,现将消息驱动微服务:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]

  5. 什么是微服务架构 Spring Cloud?

    1 为什么微服务架构需要Spring Cloud 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB) ...

  6. 微服务网关 Spring Cloud Gateway

    1.  为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...

  7. 微服务与Spring Cloud资料

    Microservices Using Spring Boot and Spring Cloud 微服务注册中心 Eureka 架构深入解读 50+ 顶级开源 Kubernetes 工具列表 Apol ...

  8. 微服务之Spring cloud

    微服务 Spring cloud Spring Cloud provides tools for developers to quickly build some of the common patt ...

  9. 第十章 消息驱动的微服务: Spring Cloud Stream

    Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架. 它可以基于Spring Boot 来创建独立的. 可用于生产的 Spring 应用程序. 它通过使用 Sprin ...

随机推荐

  1. Android 上传开源项目到 jcenter 实战踩坑之路

    本文微信公众号「AndroidTraveler」首发. 背景 其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章. 包括我本人在将开源项目上传到 jcenter ...

  2. Programming In Lua 第四章

    1, 2, 3, 4, 5, 6, 7,

  3. html、javascript、url特殊字符的转义诠释及使用方法详解

    html.javascript.url特殊字符转义在实际编程中都是有用到的,有的人对特殊字符转义的使用不是很清楚,下面就对html,javascript,url特殊字符的转义做一下说明和归纳. htm ...

  4. JAVA 实现 GET、POST、PUT、DELETE HTTP请求

    1.get 2.put 3.post 4.delete

  5. 一文看懂Python的面向对象编程

    之前在网络上看了很多关于面向对象的编程详解,还是不够过瘾,所以决定自己动手写一篇. 面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计. 类(Class) ...

  6. VS2008 专业版试用到期破解 【转】

    对于在win7内核下的vs2008破解,和在xp内核系统下的破解是不同的.传统(XP)的破解方式: 一.先安装试用版,然后在“添加或删除程序”里找到VS2008,点“更改/删除”就会看到一个输入序列号 ...

  7. 100天搞定机器学习|Day11 实现KNN

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  8. ORACLE常用函数的使用方法

    ORACLE常用函数的使用方法 1. 字符串函数 (1) length(); 获取字符长度SELECT LENGTH('中国') FROM PLATFORM_METAINFO_TABLES WHERE ...

  9. Hackbar再次更新后的破解思路 v2.2.6

    不得不说在日常测试和渗透测试中hackbar这一插件给我带来了很大的便利 Hackbar在2.1.3之后的版本就开始收费了虽说价格不是很贵,但我们还是本着学习研究的心态来看看怎么绕过收费验证. 谷歌: ...

  10. c++学习书籍推荐《C标准库(英文版)》下载

    <C标准库(英文版)>是由世界级C语言专家编写的C标准库经典著作,影响了几代程序员. <C标准库(英文版)>集中讨论了C标准库,全面介绍了ANSI/ISO C语言标准的所有库函 ...