概述

本文章只是简单介绍了微服务开发的一些关键词,如果需要知道具体实现和可以评论留言 我会及时的增加连接写出具体实现(感觉没人看 就没写具体实现)。

持续更新中。。。。。。

SpringCloud和Dubbo的区别

Dubbo的定位始终是一款基于传输层(TCP)的RPC框架,RPC(Remote Procedure Call)通信过程在传输层中完成(HTTP通信在应用层完成),

所以RPC调用方式需要服务端与客户端之间建立Socket连接来实现二进制数据的交换

SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式(Spring Cloud就真正的将整个Rest作为RPC实现技术)。

而SpringCloud的目标是微服务架构下的一站式解决方案。

服务治理和服务发现Eureka

Spring的服务治理是使用Netflix的Eureka作为服务治理的,它是我们构建Spring Cloud分布式最为核心和最为基础的模块,

他的作用是注册和发现Spring Boot服务,并提供监控管理功能。

每一个微服务都可以像服务治理中心注册多个节点(服务名称相同,更改端口号 在启动一次即可)

很多时候 我们也希望服务治理中心也是多个节点,这才可能满足高可用和负载均衡的要求

解决办法: 我们可以采用服务治理中心互相注册来保持相互监控

服务治理中心名称保持不变,将当前的服务治理中心节点A注册到服务治理中心节点B,然后将服务治理中心节点B注册到服务治理中心节点A。

Eureka心跳机制

微服务客户端之所以可以和Eureka保持联系,依靠的是心跳机制,也就是说你客户端可以自己来进行心跳的配置处理。

如果最大心跳时间间隔微服务没有进行心跳(如配置2s心跳心跳一次 最大心跳时间间隔5s),则认为该微服务已经死宕机了(Eureka会默认出现红字提醒)

微服务之间的调用

Rabbion实际上是一个RestTemplate对象,通过注解@LoadBalance 可以让RestTemplete实现站点层到服务层负载均衡

也就是通过这个restTemplete对象调用用户微服务请求的时候,Ribbon会自动给用户微服务实现负载均衡,请求会被分摊到微服务的各个节点上。

Feign声明式调用。

使用restTemplete对象调用除了编写URL,还需要注意这些参数的组装和结果的返回操作。为了克服这些不友好,Spring Cloud提供了声明式调用组件Feign。

Feign是一个基于接口的编程方式,开发者只需要声明接口和配置注解,在调度接口方法时,Spring Cloud就根据配置来调度对应的REST风格的请求。

断路器—Hystrix

在互联网中,某一个微服务可能出现故障,为了不蔓延到其他微服务上面导致雪崩效应。断路器会将产生故障的服务节点进行"熔断",保持各个微服务持续可用。

处理熔断的方式有 限流、缓存、服务降级,下面介绍服务降级。

所谓降级服务,就是当请求发生超时或者发生故障时,就会使用自身服务的其他方法进行相应。

对于Hystrix,Spring Cloud还提供了一个仪表盘进行监控短路的情况。

路由网关Zuul

网关的功能对分布式网站十分重要,首先他可以将请求路由到真是服务器的IP地址,避免直接的攻击真实服务器

其次它也可以作为一种负载均衡的手段,使请求按照一定的算法平摊到多个节点上,减缓单点的压力。

反向代理层到站点层的负载均衡

SpringCloud Stream

Spring Boot之中为了方便开发者,已经整合了消息组件,也提供了有一系列的处理支持。如果按照这样的方式在Spring Cloud之中进行消息处理,有些人会认为比较麻烦。

所以在Spring Cloud里面将消息整合的处理操作进行了进一步的抽象操作,实现了更加简化的消息处理。

简单总结:SpringCloud Stream就是实现了MDB功能,同时可以增加更加简化方便的整合消息组件。

SpringCloud Config

顾名思义SpringCloudConfig的核心作用就在于配置文件的管理上。

当项目开发复杂微服务有特别多几百个的时候,对于配置文件的管理就非常麻烦,如果想要进行某一个项配置文件的变更(举例 数据库驱动变更),那么就有可能修改上百个配置文件。

SpringCloudConfig借助SVN、GITHUB来进行微服务配置文件的保存,SpringCloudConfig保存的配置就是我们GIT仓库。

至于配置文件的安全问题(举例 配置的JDBC不能泄露),在SpringCloudConfig之中还提供有一些安全加密处理 密钥处理、jsk安全处理。

本质:SpringCloudConfig要求我们所有的配置服务项都要求放到GIT之中,我们使用的时候进行加载,方便整套微服务架构中配置文件的统一管理。

Docker

几乎每个有趣的应用都至少有一个类似数据库或者消息中间件的基础设施服务,我们可以选择把这些基础设施服务安装在自己的机器上。

不幸的是安装起来并不容易,就比如说之前在window上安装mysql各种问题。如果有一键安装的配置就完美了,并且我们并不喜欢在自己的机器上装满各种乱七八糟的服务。

因此我们要用docker容器,docker将作为一个容器运行我们需要的所有的服务。(Nginx Mq Redis Mysql 等等等等)

Docker几个重要的概念

镜像

一般情况下,我们首先需要将程序打包到Docker镜像中,随后才能将镜像交给其他人使用。

容器

当我们获取到Docker镜像以后,可以随时运行该Docker镜像,此时变会启动一个Docker容器,该容器将运行镜像中封装的程序

如果我们把Docker镜像理解为JAVA类的话,那么Docker容器就相当于Java实列。

仓库

集中存放镜像文件的地方(可以理解为GitHub这样的托管服务器)

Jenkins

我们使用Git管理代码,使用Maven构建项目,使用Docker封装服务,这些事情都需要通过手工方式一步一步的完成,能否让这些步骤自动的去执行呢?

也就是说开发人员将源代码推送到Git远程仓库,自动进行Maven构建,并自动将构建生成的程序包放入Docker容器中。

聊聊分布式开发 Spring Cloud的更多相关文章

  1. spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用

    通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...

  2. Spring cloud开发内存占用过高解决方法

    https://blog.csdn.net/wanhuiguizong/article/details/79289986 版权声明:本文为博主原创文章,转载请声明文章来源和原文链接. https:// ...

  3. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

  4. 简述 Spring Cloud 是什么1

    很多同学都了解了Spring ,了解了 Spring Boot, 但对于 Spring Cloud 是什么还是比较懵逼的. 本文带你简单的了解下,什么是Spring Cloud. Spring Clo ...

  5. 基于Spring Cloud的微服务入门教程

    (本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...

  6. 0x01 Spring Cloud 概述

    Spring Cloud Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分 ...

  7. SpringCloud分布式开发五大神兽

    SpringCloud分布式开发五大神兽 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix ...

  8. Spring Cloud 概述

    1. Spring Cloud 引言 首先我们打开spring 的官网:https://spring.io/ 我们会看到这样一张图片 这个图片告诉我们,开发我们的应用程序就像盖楼一样, 首先我们需要搭 ...

  9. SpringCloud分布式开发理解

    谈到SpringCloud最新接触到的可能就是那五大"神兽",之前最先接触分布式开发是通过dubbo的RPC远程过程调用,而dubbo给我得感觉就是:虽然所有的主机物理上分布了,但 ...

随机推荐

  1. 关于new date()获取服务器时间与linux系统时间不一致的解决办法 2017.12.6

    在catalina.sh  第一行添加一下脚本JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

  2. Latex appendix 生成附录A和B

    第一种: \documentclass[a4paper,12pt]{cctart} \begin{document}     main body %正文内容   \appendix   \renewc ...

  3. Requests库作者另一神器Pipenv的用法

    前言 我们在运行 Python 项目的时候经常会遇到一些版本问题,例如 A 项目依赖于 Django 1.5,而 B 项目又依赖 Django 2.0,而我们的系统却只有一个 Python 解释器,我 ...

  4. Linux服务器安装Oracle服务端总结

    摘要: 通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端.本例中linux服务器系统为CentOS6.5. #环境设置 1.检查服务器 ...

  5. .net core微服务之基于Docker+Consul+Registrator服务注册服务发现

    一.Docker部分: 先拉最新的asp.net core的镜像: docker pull microsoft/aspnetcore 将下载下来的镜像重命名,为什么要重命名?等会讲Registrato ...

  6. BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针

    BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间, ...

  7. BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树

    BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资. ...

  8. 硬木地板 JDFZ1667

    Description 举行计算机科学家盛宴的大厅的地板为M×N (1<=M<=9, 1<=N<=9)的矩形.现在必须要铺上硬木地板砖.可以使用的地板砖形状有两种:1) 2×1 ...

  9. 实验吧 ---- 隐写术之so beautiful so white

    因为好久没有写博客,所以今天本宝宝要弥补这个过错,一下子更新许多文章,希望各位小伙伴能够原谅,以后我会加倍努力的! 这一次主要都是实验吧里面的 关于隐写术方面的知识,后续我会上传一些解密工具,希望能够 ...

  10. 用 fhq_Treap 实现可持久化平衡树

    支持对历史版本进行操作的平衡树 Treap 和 Splay 都是旋来旋去的 这样平衡树可持久化听起来不太好搞? 还有 fhq_Treap ! 每次涉及操作就复制一个节点出来 操作历史版本就继承它的根继 ...