Spring Cloud整体核心架构:Rest服务,在Spring Cloud配置过程中,都是遵循Rest风格规范,在Rest处理中,必不可少两个对象端:服务的提供者(provider)和服务消费者(consumer)

所以整个Spring Cloud的基础结构如下所示:

既然Spring Cloud的核心是Restful架构,那么如果想更好的去使用微服务好需要考虑这些问题:

1、所有的微服务的地址可能非常多,为了统一管理这些地址,也为了能够即时告诉用户哪些服务不可用用,为此必不可少一个分布式注册中心,并且注册中心支持HA机制(High Availability),为了高效且方便的服务注册,Spring Cloud使用Eureka服务注册中心。

2、对于整个的WEB端的架构(Spring Boot实现),可以进行轻松方便的WEB程序编写,而后利用Nginx或Apache实现负载均衡,这是WEB端端的负载均衡,那么业务端呢?应该也提供多个业务端进行负载均衡,这时将所有需要参与到负载均衡的业务端在Eureka之中进行注册。

在进行客户端使用Rest架构调用的时候,都需要有一个调用地址,即使使用了Eureka作为注册中心,也需要有一个明确的调用地址,但是所有的操作都利用访问地址的方式来调用。程序的开发者最方便的应用工具是接口,更好的方式是将所有的Rest服务的内容以接口的方式调用,所以它有提供了feign技术,利用feign可以伪造接口。

3、在进行整体微服务架构设计的时候由于牵扯到的问题还是属于RPC,所以不可避免考虑到熔断处理机制,所谓上的熔断就好比用电安全之中的保险丝,假设现在有若干个微服务,并且这些微服务之间允许相互调用,例如,A服务调用B服务、B服务又调用了C服务。

如果实际开发中没有设计好熔断处理机制,那么就会出现雪崩效应,所以为了防止这样的灾难问题出现,Spring Cloud里面提供有Hystrix熔断处理机制,以保证某一个微服务出现问题之后依然可以正常提供服务信息,但是这个返回的服务信息可能已经不是期望的结果,而是服务故障的信息,让调用方知道该服务出现,避免扩大更大范围的影响。

4、在进行微服务访问的时候还有一点是非常可怕的,客户端调用Rest微服务时需要知道所有微服务的名称信息,如果服务多名称也会多,操作起来非常麻烦,同时增加日后维护成本。

通过Zuul的代理用户只需要知道指定的路由的路径就可以访问指定的微服务的信息,这样更好提现了Java中“key=value”的设计方案,而且所有的微服务通过Zuul进行代理之后也可以更加安全的名称的隐藏。

5、在Spring Boot里面突出“零配置”的概念,原则上不再使用任何配置文件,但是事实上没有完全实现,因为在整体的设计里面,依然会提供application.yml等配置文件,那么在微服务创建之中,一定有成百上千个微服务,于是这些配置文件的管理就成为问题,维护起来就不是件容易的事了。

为了解决这样的问题,Spring Cloud的设计中提供一个SpringCloudConfig的程序组件,利用这个组件就可以直接基于Git或SVN来进行配置文件的管理。

由此可见,在整体设计上SpringCloud更好的实现了RPC的架构设计,而且使用了Rest作为通信的基础,这是它无与伦比之处,同时大量使用了Netflix公司的产品实践技术,所以这些技术也有可靠保证。

作者: xiaogao

出处: http://www.cnblogs.com/tocode/

关于作者:专注Java Web,网络爬虫,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但务必注明出处,且在文章页面明显位置给出, 原文链接 如有问题请咨询。

Spring Cloud 微服务入门(二)--Spring Cloud 架构的更多相关文章

  1. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  2. spring cloud微服务实践二

    在上一篇,我们已经搭建了spring cloud微服务中的注册中心.但只有一个注册中心还远远不够. 接下来我们就来尝试提供服务. 注:这一个系列的开发环境版本为 java1.8, spring boo ...

  3. Spring Cloud 微服务五:Spring cloud gateway限流

    前言:在互联网应用中,特别是电商,高并发的场景非常多,比如:秒杀.抢购.双11等,在开始时间点会使流量爆发式地涌入,如果对网络流量不加控制很有可能造成后台实例资源耗尽.限流是指通过指定的策略削减流量, ...

  4. 微服务入门二:SpringCloud(版本Hoxton SR6)

    一.什么是SpringCloud 1.官方定义 1)官方定义:springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具(例如配置管理.服务发现.断路器.智能路由.微代理.控制总线 ...

  5. Spring Cloud 微服务入门(一)--初识分布式及其发展历程

    分布式开发出现背景 当有计算机出现一段时间之后就开始有人去想如何将不同的电脑进行网络连接,而网络连接之后对于web的项目开发就探索所谓的分布式设计,同时人们也意识到重要的数据必须多份存在.所以分布式就 ...

  6. Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin

    前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...

  7. 微服务入门三:SpringCloud Alibaba

    一.什么是SpringCloud Alibaba 1.简介 1)简介 阿里云未分布式应用开发提供了一站式解决方案.它包含了开发分布式应用程序所需的所有组件,使您可以轻松地使用springcloud开发 ...

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

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

  9. Spring Cloud 微服务二:API网关spring cloud zuul

    前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...

随机推荐

  1. Spring Boot Async异步执行

    异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: Execut ...

  2. JNLP文件具体说明编辑

    JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应 ...

  3. NgModelController: $setViewValue,$render,Formatter, Parser

    NgModelController为ngModel directive提供了API.这个controller包含了关于data-binding,validation,css update, value ...

  4. 如何阅读 Redis 源码?ZZ

    原文链接 在这篇文章中, 我将向大家介绍一种我认为比较合理的 Redis 源码阅读顺序, 希望可以给对 Redis 有兴趣并打算阅读 Redis 源码的朋友带来一点帮助. 第 1 步:阅读数据结构实现 ...

  5. CentOS 7 Nginx+PHP环境搭建!

    1.Nginx 安装 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx. ...

  6. easyui学习笔记8—在手风琴中加载其他的页面

    在手风琴中加载其他页面和在表格中加载其他的页面有写类似的,就是请求另外一个页面显示数据. 1.先看看引用的资源文件 <link rel="stylesheet" href=& ...

  7. HTTP 中状态码 302的使用场景

    一直都知道302是临时重定向,可是不懂为什么要用这个,直到看到了这个 这样就可以用一个URL,来访问其他的URL上的资源了,非常的nice

  8. Windows Server 2008 安装wampserver失败的总结

    1.最好选择2.4以下版本. 2.如果报确实MSVCR100.dll的错误,需要下载运行环境包(参考博客)

  9. Android(java)学习笔记207:Android下的属性动画(Property Animation)

    1. 属性动画(Property Animation)引入: 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(fra ...

  10. poj 1159 Palindrome 【LCS】

    任意门:http://poj.org/problem?id=1159 解题思路: LCS + 滚动数组 AC code: #include <cstdio> #include <io ...