SpringColud微服务

Easter79
• 阅读 490

一、什么是微服务架构

  微服务架构是一种架构模式,它提倡讲单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在单独的进程当中,服务与服务之间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

二、微服务的优缺点

优点

  • 每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求
  • 开发简单、开发效率高,一个服务只干一件事
  • 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员
  • 微服务是松耦合的,是有功能意义的服务,无论在开发阶段还是部署阶段都是独立的
  • 微服务能使用不同的语言进行开发
  • 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具如Jenkins,Hudson,bamboo.
  • 微服务只是业务逻辑的代码,不会和HTML,CSS或其它界面组件混合。
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库

缺点

  • 开发人员要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 性能监控

三、微服务的技术栈

微服务条目 落地技术

服务开发 Springboot、Spring、SpringMVC

服务配置与管理 Netflix公司的Archaius、阿里的Diamond等

服务注册与发现 Eureka、Consul、Zookeeper等

服务调用 Rest、RPC、gRPC

服务熔断器 Hystrix、Envoy等

负载均衡 Ribbon、Nginx等

服务接口调用(客户端调用服务的简化工具)Feign等

消息队列 Kafka、RabbitMQ、ActiveMQ等

服务配置中心管理 SpringCloudConfig、Chef等

服务路由(API网关) Zuul等

服务监控           Zabbix、Nagios、Metrics、Spectator等

全链路追踪          Zipkin,Brave、Dapper等

服务部署 Docker、OpenStack、Kubernetes等

数据流操作开发包 SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)

事件消息总线 Spring Cloud Bus

四、SpringCloud技术架构

SpringColud微服务

五、SpringCloud和SpringBoot是什么关系?

  SpringBoot专注于快速方便的开发单个个体微服务。

  SpringCloud是关注全局的微服务协调治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等集成服务。

  SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。

SpringColud微服务

最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
  严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。

品牌机与组装机的区别
  很明显,Spring Cloud的功能比DUBBO更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而Spring Cloud就像品牌机,在Spring Source的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。

社区支持与更新力度
  最为重要的是,DUBBO停止了5年左右的更新,虽然2017.7重启了。对于技术发展的新需求,需要由开发者自行拓展升级(比如当当网弄出了DubboX),这对于很多想要采用微服务架构的中小软件组织,显然是不太合适的,中小公司没有这么强大的技术能力去修改Dubbo源码+周边的一整套解决方案,并不是每一个公司都有阿里的大牛+真实的线上生产环境测试过。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
美团java研发岗二面:覆盖所有面试知识点
面试真题以及解析Web,RESTfulAPI在微服务中的作用是什么?微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得WebAPI成为微服务的一个非常重要的推动者。RESTfulAPI基于Web的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。
Easter79 Easter79
3年前
springcloud分布式架构的理解
一、什么是微服务架构微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务独立部署,服务之间相互配合、相互协调,每个服务运行于自己的进程中。服务与服务间采用轻量级通讯,如HTTP的RESTfulAPI等避免统一的、集中式的服务管理机制Struts2安全问题被踢出微服务:强调的是服务的大小,关注的是某一个点,是具
Stella981 Stella981
3年前
Consul集群搭建
 近几年随着Docker容器技术、微服务等架构的兴起,人们开始意识到服务发现的必要性。微服务架构简单来说,是一种以一些微服务来替代开发单个大而全应用的方法,每一个小服务运行在自己的进程里,并以轻量级的机制来通信,通常是HTTPRESTfulAPI。微服务强调小快灵,任何一个相对独立的功能服务不再是一个模块,而是一个独立的服务。那么,当我们需要
Stella981 Stella981
3年前
Dubbo和Spring Cloud微服务架构'
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和SpringCloud。各大互联网公司也有自研的微服务框架,但其模式都于这二
Wesley13 Wesley13
3年前
2020年微型服务的发展状况
!(https://oscimg.oschina.net/oscnet/bc2e6835216e4484b2b67abfece3fa1f.gif)“微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个服务在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务功能构建的,并且可以通过完全自动化的部署机
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k