1、微服务简介

微服务优点

  • 服务组件化

    每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署
  • 技术栈灵活

    约定通信方式,是得服务本身功能实现对技术要求不再那么铭感
  • 独立部署

    每个微服务独立部署,加快部署速度,方便扩展
  • 扩展性强

    每个微服务可以部署多个,并且有负载均衡能力
  • 独立数据

    每个微服务有独立的基本组件,例如数据库、缓存等

微服务缺点

  • 沟通成本
  • 数据一致性
  • 运维成本
  • 内部架构复杂性

微服务和单体应用

单体应用,易于部署、测试,但是会使得代码膨胀,难以维护,构建和部署成本大,新人上手难

适用于微服务的框架:Spring Boots、Spring Cloud、Dubbo

2、K8s部署微服务考虑的问题

微服务架构图

微服务流程图

  • 微服务间如何通信?

    REST API、RPC、MQ

  • 微服务如何发现彼此?

    通过注册中心进行注册,发现

  • 组件之间怎么个调用关系?

    微服务内部处理逻辑

  • 那个服务作为整个网站入口?

    网关,即gateway

  • 那些微服务需要对外访问?

    只需要网关入口对外即可

  • 微服务怎么部署?更新?扩容?

    基于Kubernetes就可以轻易实现

  • 区分有状态应用和无状态应用?

    无状态应用:不考虑存储,不维护有状态信息,也不考虑和其它服务副本是否有关系

    有状态应用:有固定存储,例如:mysql、mongodb

有状态应用不建议部署到kubernetes

为什么要用注册中心

微服务太多面临的问题:

  • 怎么记录一个微服务多个副本接口地址?
  • 怎么实现一个微服务多个副本负载均衡?
  • 怎么判断一个微服务副本是否可用?

    主流注册中心:Eureka,Nacos

不同环境如何区分配置文件

  • configmap
  • entrypoint.sh
  • java -jar --spring.profiles.active=dev xxx.jar
  • 统一配置中心,例如:Apollo,Disconf

3、项目迁移到k8s流程

  1. 制作镜像(应用程序、运行环境、文件系统)

  2. 控制器管理Pod

    Deployment:无状态部署

    StatefulSet:有状态部署

    DaemonSet:守护进程部署

    Job & CronJob:批处理

  3. 暴露应用

    Service定义了Pod的逻辑集合和访问这个集合的策略

    Service引入为了解决Pod的动态变化,提供服务发现和负载均衡

    支持Cluster IP,NodePort以及LocalBalancer三种类型

    Service的底层实现主要实现有iptables和ipvs两种网络模式

    使用CoreDNS解析Service名称

    通过Label关联Pod

  4. 对外发布应用(ingress)

    通过Service关联Pod

    基于域名访问

    通过Ingress Controller实现Pod的负载均衡(支持TCP/UDP 4层和HTTP 7层)

  5. 日志/监控

    容器部署过程中一般有以下三种数据:

    启动时需要初始化数据,可以是配置文件。

    启动过程中产生的临时数据,该临时数据需要多个容器共享

    启动过程中产生的持久化数据

    主流方案:FileBeat + ELK、Prometheus + Grafana

微服务交付至kubernetes流程的更多相关文章

  1. Kong 微服务网关在 Kubernetes 的实践

    来源:分布式实验室译者:qianghaohao本文主要介绍将 Kong 微服务网关作为 Kubernetes (https://www.alauda.cn)集群统一入口的最佳实践,之前写过一篇文章使用 ...

  2. 从Spring Cloud微服务视角理解Kubernetes

  3. 为什么 kubernetes 天然适合微服务 (3)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 四.Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现 ...

  4. 为什么 kubernetes 天然适合微服务 (2)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 三.微服务化的十个设计要点 微服务有哪些要点呢?第一张图是 SpringCloud 的整个生态. 第二张图是微服 ...

  5. 为什么 kubernetes 天然适合微服务 (1)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发 ...

  6. 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

    [SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...

  7. Openstack+Kubernetes+Docker微服务实践

    Openstack+Kubernetes+Docker微服务实践 .....   Openstack+Kubernetes+Docker微服务实践之路--选型 posted @ 2016-11-15 ...

  8. 解读与部署(三):基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  9. 使用 Nocalhost 开发 Rainbond 上的微服务应用

    本文将介绍如何使用 Nocalhost 快速开发 Rainbond 上的微服务应用的开发流程以及实践操作步骤. Nocalhost 可以直接在 Kubernetes 中开发应用,Rainbond 可以 ...

随机推荐

  1. MYSQL对数据库和表的基本操作

    CREATE DATABASE testdb CHARSET=UTF8 创建一个数据库 名字叫做testdb USE testdb; 选择数据库 CREATE TABLE testTable1( ) ...

  2. nginx 命令行参数 启动 重启 重载 停止

    今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pk ...

  3. pyteeseract使用报错Error: one input ui-file must be specified解决

    Python在图像识别有天然的优势,今天使用pytesseract模块时遇到一个报错:“Error: one input ui-file must be specified”. 环境:windows ...

  4. 7-3 jmu-python-回文数判断(5位数字) (10 分)

    本题目要求输入一个5位自然数n,如果n的各位数字反向排列所得的自然数与n相等,则输出‘yes’,否则输出‘no’. 输入格式: 13531 输出格式: yes 输入样例1: 13531 输出样例1: ...

  5. 一个轻量级的基于 .NET Core 的 ORM 框架 HSQL

    HSQL 是一种轻量级的基于 .NET Core 的数据库对象关系映射「ORM」框架 HSQL 是一种可以使用非常简单且高效的方式进行数据库操作的一种框架,通过简单的语法,使数据库操作不再成为难事.目 ...

  6. Kafka体系架构详细分解

    我的个人博客排版更舒服: https://www.luozhiyun.com/archives/260 基本概念 Kafka 体系架构 Kafka 体系架构包括若干 Producer.若干 Broke ...

  7. I - A计划 HDU - 2102

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  8. 第十章、Vue项目的联调上线

    抓包 Fiddler 一.解决跨域 proxyTable(查看博客总结) 二.解决用本机ip地址不能访问 在dev中加上 --host 0.0.0.0就可以用本机ip访问,这样的话可以用手机在内网(局 ...

  9. javascript中的中介者模式——迪米特法则

    ”迪米特法则“——最少知识原则,不和陌生人说话,就是说,一个对象应当对其他对象有尽可能少的了解.talk only to your immediate friends.初衷是:降低对象之间的耦合度. ...

  10. JavaScript(js)函数声明与函数表达式的区别

    在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的. 函数声明与函数表达式用代码写出来是这 ...