Spring Cloud 微服务入门(二)--Spring Cloud 架构
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 架构的更多相关文章
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- spring cloud微服务实践二
在上一篇,我们已经搭建了spring cloud微服务中的注册中心.但只有一个注册中心还远远不够. 接下来我们就来尝试提供服务. 注:这一个系列的开发环境版本为 java1.8, spring boo ...
- Spring Cloud 微服务五:Spring cloud gateway限流
前言:在互联网应用中,特别是电商,高并发的场景非常多,比如:秒杀.抢购.双11等,在开始时间点会使流量爆发式地涌入,如果对网络流量不加控制很有可能造成后台实例资源耗尽.限流是指通过指定的策略削减流量, ...
- 微服务入门二:SpringCloud(版本Hoxton SR6)
一.什么是SpringCloud 1.官方定义 1)官方定义:springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具(例如配置管理.服务发现.断路器.智能路由.微代理.控制总线 ...
- Spring Cloud 微服务入门(一)--初识分布式及其发展历程
分布式开发出现背景 当有计算机出现一段时间之后就开始有人去想如何将不同的电脑进行网络连接,而网络连接之后对于web的项目开发就探索所谓的分布式设计,同时人们也意识到重要的数据必须多份存在.所以分布式就 ...
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...
- 微服务入门三:SpringCloud Alibaba
一.什么是SpringCloud Alibaba 1.简介 1)简介 阿里云未分布式应用开发提供了一站式解决方案.它包含了开发分布式应用程序所需的所有组件,使您可以轻松地使用springcloud开发 ...
- 基于Spring Cloud的微服务入门教程
(本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...
- Spring Cloud 微服务二:API网关spring cloud zuul
前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...
随机推荐
- 为TextView增加onclick
必须添加上 android:clickable="true"
- 信用卡精养卡POS机方案
所谓的精养卡,就是模仿有钱人的一种方式,提额难吗!真心不难,难就难在养卡消费 ,信用卡都有,但是不同费率的POS机你有吗,没有POS机难道你真的要去花费去消费吗,你消费的起吗?所以我们这个行业就出现了 ...
- ACM-某大牛的建议
一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划你练练: 第一阶段: 练经典 ...
- Linux下配置免密登录!
ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ss ...
- 【Leetcode】【Easy】Reverse Linked List
题目: Reverse a singly linked list. 解题: 反转单链表,不再多介绍了. 如果会“先条件->定参数->确定不变式->验证后条件”的思维方法,一定会bug ...
- SAP S/4HANA使用ABAP获得生产订单的状态
在S/4HANA里,我们如何根据一个销售订单的行项目,查看对应的生产订单状态? 双击行项目: 点击Schedule line: 这里就能看到生产订单的ID和状态了. 其中订单的状态存储在表vsaufk ...
- python UI自动化实战记录八:添加配置
添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...
- CopyOnWriteArrayList对比ArrayList
ArrayList非线程安全,CopyOnWriteArrayList线程安全 ArrayList添加元素的时候内部会预先分配存储空间,CopyOnWriteArrayList每次添加元素都会重新co ...
- 迷宫问题——BFS
改进版 BFS #include <bits/stdc++.h> using namespace std; #define coordi(x,y) ( m*(x-1)+y ) const ...
- [原]零基础学习在Android进行SDL开发后记
本着学习交流记录的目的编写了这个系列文章,主要用来记录如何从零开始学习SDL开发的过程,在这个过程中遇到了很多问题,差点就放弃了.首先是SDL的Android移植的时候遇到了比较坑的是SDL移植到An ...