热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微服务简略概述

微服务概述

之前马丁的文章

微服务优缺点

微服务优点:

  • 单一职责
  • 服务内聚,足够小,代码容易理解,聚焦单一业务功能需求
  • 松耦合,开发阶段部署阶段都是独立的
  • 能使用不同的语言开发,因为基于轻量级通信
  • 易于第三方集成,微服务容易灵活部署,持续集成工具:jenkins、Hudson、bamboo
  • 容易理解修改维护
  • 只是业务逻辑代码
  • 每个微服务都有自己的存储能力,可用有自己的数据库,或使用统一数据库

缺点:

  • 要处理分布式系统的复杂性
  • 多服务运维难
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 性能监控。。。

微服务技术栈:

  • 服务开发
    • spring
    • springMVC
    • springBoot
  • 服务配置与管理
    • NetFlix公司的Archaius
    • 阿里的Diamond
  • 服务注册与发现
    • Eureka
    • Consul
    • ZooKeeper
  • 服务调用
    • Rest
    • RPC
    • gRPC
  • 服务熔断
    • Hystrix
    • Envoy等
  • 负载均衡
    • Ribbon
    • Nginx等
  • 服务接口调用
    • Feign等
  • 消息队列
    • Kafka
    • RabbitMQ
    • ActiveMQ等
  • 服务配置中心管理
    • SpringCloudConfig
    • Chef等
  • 服务路由(API网关)
    • Zuul等
  • 服务监控
    • Zabbix
    • Nagios
    • Metrics
    • Specatator等
  • 全链路追踪
    • Zipkin
    • Brave
    • Dapper等
  • 服务部署
    • Docker
    • OpenStack
    • Kubernetes等
  • 数据流操作开发包
    • SpringCloudStream(封装Redis,Rebbit,Kafka等发送接收消息)
  • 事件消息总线
    • SpringCloud Bus

SpringCloud和SpringBoot关系

  • SpringBoot专注于开发单个个体微服务,打成jar包
  • SpringCloud将SpringBoot开发的单体服务整合起来
    • 为服务之间提供配置管理、服务发现、断路由、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
    • SpringCloud无法离开SpringBoot
    • SpringCloud关注全局的服务治理框架

Dubbo和SpringCloud技术选型

微服务简略概述

现在开发流程

  • CDN加速器
  • 负载均衡可能有很多层,LVS 、Nginx,负载均衡可水平拆分,多个Lvs多个Nignx
  • 服务一般以集群的样子,Nginx在负载一个个的服务器Tomcat
  • 服务要跟文件系统打交道,分布式文件系统 ,xxxDFS,文件服务器要对分布式文件系统读写,所以是双向箭头
  • Tomcat要去注册中心获取服务
  • 获取服务需要有服务提供者,dubbo-admin注册服务到注册中心
  • 服务者后面可能有多个数据库,数据库容量不足可能水平拆分,要实现读写分离可能要垂直拆分,读和写分成两部分数据库进行工作
  • 读写分离之间需要数据同步,MyCat做数据同步,保证数据的一致性
  • 读数据要水平扩展,写数据需要垂直扩展
  • 服务提供者连接数据库需要一些缓存机制,将数据放入非关系型数据库Redis,以K-V键值对的形式,Redis还能做集群
  • 搜索引擎来优化 ElasticSerach
  • 提供者到缓存还需要消息中间件,队列机制,异步机制,消息在排队等着,处理完成就将消息返回

微服务简略概述

Dubbo中间停滞了一段时间,SpringCloud更加的完善,SpringCloud牺牲了服务调用的性能,避免了原生RPC带来的问题,而且Rest比RPC更加灵活,服务提供者和消费者之间一纸契约,不存在代码级别的强依赖,在微服务环境下更加合适

SpringCloud做大最大兼容性,保证了稳定性,但是Dubbo的***度更高,但是需要更高的技术人员

如何自学:

Spring Cloud Netflix

https://www.springcloud.cc/spring-cloud-config.html

springcloud中文社区

[springCloud中文网站](


推荐阅读
  • 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路 ... [详细]
  • kafka教程基本概念
    kafka教程基本概念 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • (10)redis mysql 数据同步
    update之后,写MySql,再写入Redis,替旧数据(可在MySql端定义CRUD触发器,触发后写数据到Redis,也可Redis端解析binlog) ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
author-avatar
张骞在这里
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有