什么是微服务?

小型的,简单的和解耦的服务 = 可伸缩的,有弹性的和灵活的应用程序.

什么是云?

基础设施即服务(Infrastructure as a Service, Iaas):云提供商只提供基础设施(硬件,操作系统)。

平台即服务(Platform as a Service, PaaS):云提供商还会提供基于某个平台相关的软件,接口。

软件即服务(Softwire as a Service, Saas):提供某一种具体服务,消费者完全被动,无法对技术进行选择。

基于模式的微服务开发构建

核心微服务开发模式:服务粒度,通信协议,接口设计,配置管理,服务之间的事件处理。

微服务路由模式:服务发现,服务路由。

微服务客户端弹性模式:客户端负载均衡,断路器模式,后备模式,舱壁模式。

微服务安全模式:验证,授权,凭据管理和传播。

微服务日志记录与跟踪模式:日志关联,日志聚合,微服务跟踪。

微服务构建和部署模式:构建和部署管道,基础设施即代码,不可变服务器,凤凰服务器。

使用Spring Cloud构建微服务

微服务的特点及构建遵循的原则

约束:微服务遵循UNIX理念,即应用程序是服务的集合,每个服务只做一件事,并做好一件事。

松耦合:基于微服务的应用程序是小型服务的集合,服务之间使用HTTP和REST通过非特定实现的接口彼此交互。只要服务接口未改变,微服务内部可以更加自由地被修改。

抽象:微服务完全拥有自己的数据结构和数据源,微服务所拥有的数据只能由该服务修改。

独立:每个微服务可以独立地编译和部署。

服务粒度

开始的时候可以让微服务涉及的范围更广一些,然后将其重构到更小的服务。

重点关注服务如何相互交互。

随着对问题域的理解不断增长,服务的职责将随着时间的推移而改变。

服务粒度过粗, 则会表现为:服务承担了过多的职责, 会餐跨大量表来管理数据, 测试用例将变得过多。

服务粒度过细, 则会表现为:微服务像兔子一样繁殖, 服务彼此严重依赖, 成为简单CRUD服务的集合。

微服务构建的最佳实践

代码库:每个微服务及服务器信息都应该处于版本控制中, 并且有自己独立的代码存储库。

依赖:通过构建工具(e.g. Maven)明确声明依赖项。

配置:将应用程序配置(特别是特定于环境的配置)与代码分开存储。

后端服务:通过网络与数据库或消息系统进行通信。

构建,发布和运行:保持应用程序构建,发布和运行完全分开,已构建的服务是不可改变的。

进程:微服务应该始终是无状态的,它们可以在任何超时时被杀死和替换,而不用担心一个服务实例的丢失而导致数据丢失。

端口绑定:可运行的微服务要包含一个运行时引擎(不需要单独的web服务器),服务应该在命令行上自行启动,并通过公开的HTTP端口立即访问。

并发:在需求量增大时,要启动更多的微服务实例水平伸缩。

可任意处置:可以根据需要任意启动和停止。

开发环境与生产环境等同:最小化服务运行的所有环境之间的差距。

日志:使用工具记录日志,直观查看日志。

管理进程:使用通用脚本对服务执行管理任务。

Spring Cloud(1):概览的更多相关文章

  1. Spring Cloud Netflix概览和架构设计

    Spring Cloud简介 Spring Cloud是基于Spring Boot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策 ...

  2. Spring Cloud Zuul 概览

    什么是API网关 网关这个词其实是一个硬件概念.因为按照定义,网络网关出现在网络的边缘,所以防火墙和代理服务器等相关功能 往往与之集成在一起.在家庭网络 和小型企业中,宽带路由器通常充当网络网关.它将 ...

  3. Spring Cloud netflix 概览和架构设计

    pring Cloud是基于Spring Boot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等 ...

  4. Spring Cloud微服务技术概览

    Spring Cloud 是一系列框架的有序集合.它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都 ...

  5. Java开发微服务为什么一定要选spring cloud?

    来自:网易乐得技术团队,作者:董添 李秉谦 现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性.同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚 ...

  6. Spring Cloud学习(一)

    Spring Cloud是什么? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载 ...

  7. 微服务架构之spring cloud 介绍

    在当前的软件开发行业中,尤其是互联网,微服务是非常炽热的一个词语,市面上已经有一些成型的微服务框架来帮助开发者简化开发工作量,但spring cloud 绝对占有一席之地,不管你是否为java开发,大 ...

  8. Spring Cloud 微服务三: API网关Spring cloud gateway

    前言:前面介绍了一款API网关组件zuul,不过发现spring cloud自己开发了一个新网关gateway,貌似要取代zuul,spring官网上也已经没有zuul的组件了(虽然在仓库中可以更新到 ...

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

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

  10. Spring Cloud(一):服务治理技术概览【Finchley 版】

    Spring Cloud(一):服务治理技术概览[Finchley 版]  发表于 2018-04-14 |  更新于 2018-05-07 |  Spring Cloud Netflix 是 Spr ...

随机推荐

  1. 2019 ICPC 南昌网络赛I:Yukino With Subinterval(CDQ分治)

    Yukino With Subinterval Yukino has an array a_1, a_2 \cdots a_na1,a2⋯*a**n*. As a tsundere girl, Yuk ...

  2. 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)

    P3469 [POI2008]BLO-Blockade https://www.luogu.org/problem/P3469 题目描述 There are exactly nn towns in B ...

  3. Spring入门篇——第6章 Spring AOP的API介绍

    第6章 Spring AOP的API介绍 主要介绍Spring AOP中常用的API. 6-1 Spring AOP API的Pointcut.advice概念及应用 映射方法是sa开头的所有方法 如 ...

  4. MyBatis-08-使用注解开发

    8.使用注解开发 8.1.面向接口编程 面向接口编程的根本原因:解耦,可拓展,提高复用,分层开发中.上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好 8.2.使用注解开发 注解在 ...

  5. 理解Event冒泡模型

    本文探索一下Event的冒泡过程和初学遇到的几个小bug DOM Event概述 Event接口是检测在DOM中的发生的所有事件,我们一直在用,而且从DOM的很早的版本就一直在用着.早期的网景(后来的 ...

  6. 干货 | 以太坊Mist负责人教你建立无服务器应用

    作者:Alex Van de Sande译者:王建/蔡佳慧译者介绍: 王建:万云平台区块链技术专家,拥有多年应用系统架构经验,目前在区块链落地方面进行积极探索 蔡佳慧:万云平台实习生,区块链技术爱好者 ...

  7. android&ios区别

    转自(只讲干货的老张) 面试中经常提问到一个点,就是做手机测试绕不去的点,那就是Android和ios的区别.这篇文章只做一些比较重要的点讲一下,太深入部分就不讲了,毕竟我做的是测试,而Android ...

  8. PHP mysqli_query() 函数

    PHP mysqli_query() 函数 定义和用法 mysqli_query() 函数执行某个针对数据库的查询. mysqli_query(connection,query,resultmode) ...

  9. vue中前进刷新、后退缓存用户浏览数据和浏览位置的实践

    vue中前进刷新.后退缓存用户浏览数据和浏览位置的实践 2018年07月07日 11:58:40 大灰狼的小绵羊哥哥 阅读数:4492   vue中,我们所要实现的一个场景就是: 1.搜索页面==&g ...

  10. 【线性代数】3-6:四个子空间的维度(Dimensions of the Four Subspaces)

    title: [线性代数]3-6:四个子空间的维度(Dimensions of the Four Subspaces) categories: Mathematic Linear Algebra ke ...