前言

微服务并不神秘,只是在互联网技术发展过程中的一个产物,整个架构系统随着客户端的多样性,服务越来越多,devops的发展而产生的架构变种。

许多公司,通过采用微处理结构模式解决单体应用的问题,分解的服务之间互相连接提供支持。

每个微服务都是六边形应用,都有自己的业务逻辑和适配器。服务之间通过API互相通信,提供接口供客户端使用。每个实例可能是一个云VM或者是Docker容器。

之前的web应用拆分成一系列简单的服务应用。拆分之后可以对不同用户,不同设备,不同场景进行自行部署。

微服务之间通过REST API或者MQ异步方式通信,供外网使用的API,通过Gateway来传递信息。

微服务的拆分,不像传统多个服务共享一个数据库,微服务架构每个服务都有自己的数据库,每种服务都可以有自己适合的数据库类型。

微服务好处

  1. 分解了单体应用提供多个服务的复杂性问题,拆分之后每个服务都有一个用RPC或是MQ或是API定义的边界。由于传统单体应用没有清晰的边界,存在开发,理解,维护,部署的复杂问题;
  2. 每个服务都可以有单独的团队维护开发,开发者客户选择自己擅长和合适的技术;
  3. 每个服务都可以独立部署,开发者不需要协调因其他服务调用,部署对本服务的影响。加快部署速度,更好的执行AB测试。持续部署变为可能。
  4. 每个服务都可以独立扩展。

微服务不足

  1. 需要考虑和关心更多服务之间调用的问题。
  2. 需要考虑多个服务的编排和依赖关系,包括开发和部署。
  3. 多个服务的配置,部署,扩展,监控。

微服务的特征

  1. 每个服务仅仅对单个业务负责,这个业务也是这个服务的完整容量;
  2. 每个微服务都可以独立部署,不需依赖其他服务的相关资源,如数据库,内存缓存等;
  3. 轻量级的通信协议,如REST,AMQP等;
  4. 服务具有可代替性,每个服务原则上都可以被不同的开发语言,开发框架进行技术实现,替换后不影响原有微服务对外提供的功能;
  5. 每个服务拥有自己独立的数据存储;
  6. 每个微服务由小的团队维护,服务以业务单元进行拆分;
  7. 服务之间可通过组成聚合服务对外提供较粗粒度的服务功能;

微服务名词

  • Gateway:为客户端提供API管理功能,负责负载均衡,缓存,访问控制,API计费监控等任务,可通过Eureka或者NGINX实现;
  • 服务注册于发现模块;
  • 断路器;

微服务选型

  • Dubbo,DubboX(不再维护);
  • Spring Cloud(集成框架);
  • Motan(微博平台);
  • Thrift,gRPC(算不上框架);

本次主要使用Spring Cloud;

基础框架选择 Spring Cloud和Dubbo:

  • Dubbo:

    国内影响力较大,实现了服务治理的基础,但是完成一个完备的微服务架构,还需要在各环节去扩展和完善以保证集群健康,文档较稳定。
  • Spring Cloud:

    国外影响大,社区活跃度领先,将成熟框架融为一体,继承了Spring Boot的简单配置,快速开发,部署轻松特点,更新较快,文档有差异。

日志监控

由Docker通过Syslog日志驱动将日志写入Logstash,参照ELK解决方案。

Devops

使用Docker作为微服务交付标准组件。

集成Docker

通过Consul集成Docker。

Spring Cloud搭建微服务架构----前言的更多相关文章

  1. Spring Cloud搭建微服务架构----文章汇总

    Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...

  2. Spring Cloud构建微服务架构(一)服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  3. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

  4. 第1章 Spring Cloud 构建微服务架构(一)服务注册与发现

      一.Spring Cloud 简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总 ...

  5. 基于 Spring Cloud 的微服务架构实践指南(上)

    show me the code and talk to me,做的出来更要说的明白 GitHub 项目learnSpringCloud同步收录 我是布尔bl,你的支持是我分享的动力! 一. 引入 上 ...

  6. 基于 Spring Cloud 的微服务架构实践指南(下)

    show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...

  7. Spring Cloud构建微服务架构(二)服务消费者

    Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...

  8. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创  2017-08-26  翟永超  Spring Cloud 被围观 ...

  9. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

随机推荐

  1. 用css实现3D立方体旋转特效

    先来看运行后出来的效果 它是在不停运行的一个立方体 先来看html部分的代码 <div class="rect-wrap"> <!--舞台元素,设置perspec ...

  2. 用VUEJS做一个猫眼电影web app

    之前一直在学习原生js,可是发现原生js虽然很好,但是想实现一个稍微复杂一点的项目都很麻烦.直到遇见了vue.js,发现vue是真的很好用,而且很简洁,利用组件化开发能够快速做出项目,所以为了学习vu ...

  3. Jackson学习(一)

    Jackson的一些配置.使用方式以及效率方面的简单介绍. 1.jackson的maven依赖 <!-- jackson依赖 --> <dependency> <grou ...

  4. NodeJs开发的CLI——与telnet进行通信的聊天程序

    前言: (在NodeJs中,我们想要开启一个tcp协议的做法就是引入net内置对象:      const net = require('net'); ——ES6      var net = req ...

  5. APUE学习心得

    APUE学习心得 Chapter 3 IO 3.2 文件描述符 文件描述符是一个非负整数.当打开 一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符.0 标准输入,1 标准输出, 2 标准错 ...

  6. 用Jquery做一个时间日期选择器

    今天我们就用Jquery做一个时间日期选择器,当打开网页时,文本框里面显示的是当前的日期,点击文本框可以出现年.月.日的下拉菜单,并且可以选择,会根据年份的选择判断是否是闰年,从而改变二月的天数,闰年 ...

  7. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  8. HTML <form> 标签的 method 属性(20161028)

    HTML <form> 标签的 method 属性 HTML <form> 标签 实例 在下面的例子中,表单数据将通过 method 属性附加到 URL 上: <form ...

  9. 高并发解决方案之Actor——第一节

    还在为状态的并发控制而痛苦吗?   还在因为数据库瓶颈而痛苦吗?   还在因为缓存的实时性控制而痛苦吗?   还在为了想分布式,但又不知道怎么下手而痛苦吗?   Actor欢迎你!!!   一.什么是 ...

  10. idea 中设置成公司规范的代码格式

    优雅的编码格式是一个程序员的必备素质. 最近切换到了 idea,想对自己的代码进行格式化的时候希望能自动排版成公司规定的格式,可以做以下设置: 打开 idea 的 preference: 左侧找到 c ...