go和微服务零散
文章平均质量分 88
go和微服务零散
阿白,
云原生 devops istio Go 大四ing
展开
-
go微服务系列(二):go-kit开发web应用
在前面的课时中,我们演示的 Go 例子基本都是一个简单的 main 函数,运行一小段逻辑代码,并没有涉及引入包外代码和组织 Go 项目内包依赖的方法。为了在编写项目代码时,能够引入其他开发者开源的优秀工具包,因此在进行具体的项目开发之前,我们有必要先介绍下 Go 语言的依赖包管理工具——Go Modules 。在 Go Modules 被正式推出之前,我们一般是在工作目录下组织 Go 项目的开发代码。工作目录一般由 3 个子目录组成:1.src,项目的源代码或者外部依赖的源代码以包的形式存放于此,一个目录即原创 2022-06-18 13:16:30 · 1067 阅读 · 0 评论 -
go微服务系列(五):结合jenkins完成持续化集成部署和自动化测试
在微服务开发团队中,一般会采用敏捷开发这类增长式的开发方式,这能有效提高各个微服务的迭代效率。为了让完成的代码能够尽快得到反馈,我们建议尽早将完成的代码提交到代码库中被集成部署,每天一次甚至一天多次,通过自动构建和自动化测试,尽早检测出集成的错误,从而确保错误被尽快发现和纠正。在敏捷开发中,持续集成(CI,Continuous Integration)是为了更快地发现和修复系统集成遇到的各类问题,它建议开发人员一天最少提交一次或者多次代码到代码库中,让自动化工具对提交的代码进行集成部署,并使用自动化测试工具原创 2022-06-19 14:33:07 · 1211 阅读 · 0 评论 -
go微服务系列(九):微服务之间进行远程方法调用
RPC(Remote Procedure Call,远程过程调用协议),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 只是一套协议,基于这套协议规范来实现的框架都可以称为 RPC 框架,比较典型的有 Dubbo、Thrift 和 gRPC。RPC 是远程过程调用的方式之一,涉及调用方和被调用方两个进程的交互。因为 RPC 提供类似于本地方法调用的形式,所以对于调用方来说,调用 RPC 方法和调用本地方法并没有明显区别。下面,我们就来简单介绍一下 RPC 机制的诞生和基础概原创 2022-06-20 23:18:17 · 949 阅读 · 0 评论 -
dapr系列(二)
在前面,调用了DaprHTTPAPI从Redis支持的状态存储中存储和检索状态。Dapr通过初始化创建的默认组件定义文件,使用你的机器上本地配置好的Redis实例。当制造一个应用程序时,你很可能会根据你想使用的制造时间和特定的组件来定义自己的组织文件。作为如何为你的应用程序定义自定义组件的示例,现在创建一个组件定义文件以与secretbuildingblock进行交互。1.创建本地JSON密钥存储2.使用定义组件文件在Dapr注册密钥存储创建组件定义文件构建块和。.........原创 2022-07-17 13:45:44 · 863 阅读 · 1 评论 -
go微服务系列(十一):gRPC和Thrift使用与选型
其实,除了 gRPC 外,Facebook 开源的 Thrift 框架也是业界较为流行的 RPC 方案,比如 HBase 就是使用它来提供 API 支持的。gRPC 是由 Google 开源的高性能 RPC 框架。自 2015 年发布以来,gRPC 日益成熟,并成为跨语言 RPC 通信中最流行也最受欢迎的选择之一。gRPC 拥有很多特性,其中最引人注目的有以下几个方面:1.内置流式 RPC 支持。这意味着你可以使用同一 RPC 框架来处理普通的 RPC 调用和分块进行的数据传输调用,这在很大程度上统一了网络原创 2022-06-21 00:31:14 · 2058 阅读 · 0 评论 -
go微服务系列(三):货运平台的微服务划分
在本课时,我们会首先介绍后续课程开展依赖的业务系统,也就是货运平台的功能需求,然后再基于这些需求划分货运平台的领域和限界上下文 ,最后对每个限界上下文进行战术设计,设计它们的领域对象和领域服务,为后续微服务的开发做好铺垫。项目实践最好是基于相对真实的业务开展,这样才能使你在项目实践中学到的技巧更好应用到实际开发中。本课程的后续项目实践中,我们将会以一个货运平台应用作为微服务实战项目,它需要满足以下条件:1.具备一定的复杂性,能够演示每个微服务的作用;2.业务逻辑不会过于复杂,避免你在相关专业范畴的理解上浪原创 2022-06-18 23:28:07 · 419 阅读 · 0 评论 -
go基于k8s二次开发(二)
接下来用代码创建资源,先将前面的main函数改个名比如list(),作为一个模块,都是在同一个目录下,同一个main包,下面创建main函数,实现这个创建资源的操作,因为go run需要有main函数存在(模块化编程)先放源码create方法需要的参看源码可以知道client-go创建deployment主要是写这些信息可以看到的ObjectMeta结构体中可以定义哪些内容都是这样,详细的内容记不住就看源码或者帮助文档...原创 2022-06-14 14:43:12 · 792 阅读 · 0 评论 -
micro、M3O微服务系列(二)
确保microserver在另一个终端中运行,并且我们已连接到它,即运行微服务器查看我们当地的环境如果不是本地环境,运行需要3种方法Save用于博客插入和更新Query用于阅读和列出Delete删除从ports开始虽然我们已经定义了Post消息类型,但我们仍然将一些字段重新定义为消息类型的顶级字段SaveRequest。主要原因是我们不想要要重新生成proto,我们必须makeproto在项目根目录中发出命令。上面这段代码使用了ModelPackage。.........原创 2022-07-15 23:22:42 · 245 阅读 · 0 评论 -
go微服务系列(六):服务注册和服务发现如何满足服务治理
在单体应用向微服务架构演进的过程中,原本的巨石型应用会按照业务需求被拆分成多个微服务,每个微服务会提供特定的功能,并可能依赖于其他的微服务。每个微服务实例都可以动态部署,服务实例之间的调用通过轻量级的远程调用方式(HTTP、消息队列等)实现,它们之间通过预先定义好的接口进行访问。由于服务实例是动态部署的,每个服务实例的地址和服务信息都可能动态变化,这就势必需要一个中心化的组件对各个服务实例的信息进行管理,该组件管理了各个部署好的服务实例元数据,包括服务名、IP 地址、端口号、服务描述和服务状态等。服务注册与原创 2022-06-19 14:47:53 · 825 阅读 · 0 评论 -
go微服务系列(十):Go RPC实现服务间通信
Go 语言原生的 RPC 过程调用实现起来非常简单。服务端只需实现对外提供的远程过程方法和结构体,然后将其注册到 RPC 服务中,客户端就可以通过其服务名称和方法名称进行 RPC 方法调用。使用字符串操作的服务来展示如何使用 Go 语言原生的 RPC 来进行过程调用。第一步,定义远程过程调用相关接口传入参数和返回参数的数据结构。如下代码所示,调用字符串操作的请求包括两个参数:字符串 A 和字符串 B。第二步,定义一个服务对象。这个服务对象可以很简单,比如类型是 int 或者是 interface{},原创 2022-06-21 00:01:42 · 1175 阅读 · 1 评论 -
go基于k8s的二次开发(三)
这里用修改deployment为案例原创 2022-06-14 22:56:58 · 417 阅读 · 0 评论 -
micro、M3O微服务系列(三)
Micro是一个云原生开发平台。它由服务器、命令行界面和服务框架组成,使您能够构建、运行、管理和使用微服务。被认为很像一种语言规范,并且会随着时间的推移而发展。auth服务存储帐户和访问规则。它为Micro运行时中的所有身份验证和授权提供了单一的事实来源。每个服务和用户都需要一个帐户才能操作。当运行时启动服务时,会为其生成一个帐户。微负载规则定期运行的核心服务和服务,并根据每个请求管理对其资源的访问。代理为pubsub消息传递提供了一个简单的抽象。它专注于即发即弃异步通信的简单语义。.........原创 2022-07-16 20:41:49 · 840 阅读 · 0 评论 -
go微服务系列(八):在go-kit和sevice-mesh进行服务注册与发现
在本课时,我们将使用 Go-kit 提供的服务注册与发现工具包完成服务注册与发现,并介绍 Service Mesh 中 Istio 是如何进行服务注册与发现的。强烈建议使用istio自主开发服务注册与发现客户端固然能够加深我们对微服务和服务注册与发现中心交互流程的理解,但同样会增加开发人员的理解成本,比如要了解服务注册与发现中心对外提供的接口、提交数据的具体细节,以及在服务注册与发现中心版本升级迭代或者 API 发生更新时,还需要持续维护客户端代码以避免不可用情况的发生,等等。Go-kit 作为一套微服务工原创 2022-06-19 16:06:36 · 617 阅读 · 0 评论 -
go微服务系列(七):consul给微服务添加服务注册与发现
微服务架构按业务划分微服务的特点,使得原本聚合了大量业务模块的单体应用被划分为众多的微服务。而大量微服务的出现,势必会带来运维管理上的巨大挑战,于是服务注册与发现这类自动化策略应运而生。但是引入服务注册与发现就可能引入额外技术栈,增加系统总体的复杂性,比如会引入中心化的服务注册与发现中心这类基础组件。在本课时,我们将基于 Consul 给微服务添加服务注册与发现的能力。首先,我们会基于 Kubernetes 搭建一个接近生产环境的 Consul 集群;接着再基于搭建好的 Consul 集群,为我们的微服务添原创 2022-06-19 15:16:36 · 1824 阅读 · 0 评论 -
go微服务系列(四):微服务docker容器化部署和kubernetes编排
今天我们主要来介绍微服务 Docker 容器化部署和 Kubernetes 容器编排的案例。微服务架构“分而治之”的手段将大型系统按业务分割为多个互相协作的微服务,每个微服务关注于自身业务职责,可独立开发、部署和维护,从而更好地应对频繁的需求变更和迭代。但是数量众多的微服务实例给运维带来了巨大的挑战,如果没有好的办法快速部署和启动微服务,那么微服务架构带来的好处将所剩无几。而容器化和容器编排的兴起正好填补了这个缺点。在上一课时中,我们运用 DDD 将货运平台应用划分了 4 个微服务进行开发,为了解决大量原创 2022-06-19 10:04:18 · 1415 阅读 · 0 评论 -
micro、M3O微服务系列(一)
微服务是一种软件架构模式,用于将大型单体应用程序分解为较小的可管理独立服务,这些服务通过语言无关协议(protocolbuffers、grpc、micro)进行通信,每个服务都专注于做好一件事。(但注意不是让你将应用无限制的拆分,并不是什么都拆的越小越好)微服务的概念并不新鲜,这是对面向服务架构的重新构想,但采用了一种更全面地与unix进程和管道保持一致的方法。微服务架构的理念这些服务是小型的——细粒度的作为一个单一的商业目的,类似于“做一件事,把它做好”的unix哲学事实上的资源。.........原创 2022-07-15 17:57:14 · 369 阅读 · 0 评论 -
go基于kubernetes的二次开发(一)
一些概念:1.SDK 就是 Software Development Kit 的缩写,中文意思就是【软件开发工具包】2.client-go是kubernetes官方提供的go语言的客户端库,go应用使用该库可以访问kubernetes的API Server,这样我们就能通过编程来对kubernetes资源进行增删改查操作3.“API( 应用程序编程接口):一套明确定义的各种软件组件之间的通信方法。(你的开发工具比如goland要配置好GOROOT和GOPATH)下载对应版本(建议,逻辑理解更清原创 2022-06-13 22:43:12 · 1487 阅读 · 1 评论 -
go微服务系列(一):并发程序设计基础
我们都知道计算机的核心为 CPU,它是计算机的运算和控制核心,承载了所有的计算任务。最近半个世纪以来,由于半导体技术的高速发展,集成电路中晶体管的数量也在大幅度增长,这大大提升了 CPU 的性能。著名的摩尔定律——“集成电路芯片上所集成的电路的数目,每隔18个月就翻一番”,描述的就是该种情形。过于密集的晶体管虽然提高了 CPU 的处理性能,但也带来了单个芯片发热过高和成本过高的问题,与此同时,受限于材料技术的发展,芯片中晶体管数量密度的增加速度已经放缓。也就是说,程序已经无法简单地依赖硬件的提升而提升运行速原创 2022-06-17 00:38:05 · 256 阅读 · 0 评论 -
dapr系列(一)
分布式应用程序运行时(distributeapplicationruntime)Dapr是一个可移植的、事件驱动的运行时,它使任何开发人员都可以轻松构建在云和边缘上运行的弹性、无状态和有状态的应用程序,并包含语言和开发人员框架的多样性。任何语言,任何框架,任何地方可以看出它是不限制任何语言的,跨语言,平台无关业内正在经历一波云采用浪潮。开发人员对Web+数据库应用程序架构感到满意,例如经典的3层设计,但对本质上是分布式的微服务应用程序架构不满意。成为分布式系统专家很难。云原生模式。......原创 2022-07-17 00:54:32 · 650 阅读 · 0 评论