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. OpenGL的矩阵使用——绘制桌子

    其中最左边的桌子循环上移(即匀速上移到一定位置后回到原点继续匀速上移),中间的桌子不断旋转(即绕自身中间轴旋转),最右边的桌子循环缩小(即不断缩小到一定大小后回归原来大小继续缩小). 桌子的模型尺寸如 ...

  2. iOS多线程之Thread

    多线程 • Thread 是苹果官方提供的,简单已用,可以直接操作线程对象.不过需要程序员自己管理线程的生命周期,主要是创建那部分 优缺点 面向对象,简单易用 直接操作线程对象 需要自己管理线程生命周 ...

  3. git指令-管理修改

    git指令-管理修改 git管理的不是文件,而是修改 eg:对readme.txt文件进行修改一行 在最后追加一句git has to tracked 然后添加,并且查看状态 cat +文件名称 表示 ...

  4. win10下LoadRunner12 下载安装图文教程

    1.下载安装包: 链接:https://pan.baidu.com/s/1hiGC9FjfKOFRWHVfMAHaeg 提取码:sr8x 如下图所示,咱们直接安装社区版“HP_LoadRunner_1 ...

  5. d3学习day3 --y轴添加文本标签

    y轴添加文本标签 g.append("g") .call(y_axis) .append("text") .text("price($)") ...

  6. 使用veloticy-ui生成文字动画

    前言 最近要实现一个类似文字波浪线的效果,使用了velocity-ui这个动画库,第一个感觉就是使用简单,代码量少,性能优异,在此简单介绍一下使用方法,并实现一个看上去不错的动画.具体使用方法可以点击 ...

  7. JVM—垃圾回收GC算法

    1 GC算法简介 算法 特点 标记-清除 分为"标记"和"清除"两个阶段 复制 可以解决效率问题,将可用的内存按容量划分为大小相等的两块. 标记-整理 先标记. ...

  8. 带着问题,再读ijkplayer源码

    问题 主流程上的区别 缓冲区的设计 内存管理的逻辑 音视频播放方式 音视频同步 seek的问题:缓冲区flush.播放时间显示.k帧间距大时定位不准问题- stop时怎么释放资源,是否切换到副线程? ...

  9. 《一步步成为 Hacker_Day 01》

    环境搭建 传统运行模式 - 一台机器同时只能运行一个操作系统 |:----------|----------:| | 应用程序 | 应用程序 | |:----------|----------:| | ...

  10. MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)

    hello,小伙伴们,好久不见,MySQL系列停更了差不多两个月了,也有小伙伴问我为啥不更了呢?其实我去看了MySQL的全集,准备憋个大招,更新篇长文(我不会告诉你是因为我懒的). 好了,话不多说,直 ...