现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而K8s和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。   对多数应用而言,提供对外服务的使命并不会改变,相比于原来的单体应用,微服务架构下的应用的服务出口更多,管理更繁琐,微服务网关也应运而生;而K8s也提供了多种方式来暴露应用的服务,各种Ingress实现百花齐放。面对众多技术方案,我们如何做出合理的选择,规避潜在风险,本文将给出一些选型建议,供大家参考。   云原生网关基本概述   K8s中服务对外访问的方式   对于部署在云服务器上的应用,通常使用负载均衡软件或服务(如SLB)来...

  ej6Fb1sGOJN2   2023年11月02日   60   0   0 云计算

  导读:什么是时延?在电信系统中,不同应用对时延的要求是怎样的?如何通过部署架构降低网络传输时延?本文通过介绍云网络时延的构成,并对其进行量化分析,分享在不同云网络时延要求下,不同应用对应的部署架构,并简单分析了5G时代对应用部署架构的影响和度量云网络时延的工具。 在讨论云网络时延这个看起来比较专业的话题前,先看几个比较有意思的问题: 人的最快反应速度是多少毫秒? 机器人最快反应速度是多少毫秒? 这样能在介绍云网络时延时让大家有一个时间量级上的感知。 一 什么是时延 1&...

  ej6Fb1sGOJN2   2023年11月02日   18   0   0 云计算

缘起 重新理解云计算,这个「重新」重点是对我自己而言的。 有这样的感受是来源于几个触点: 第一个触点是阅读了两篇非常有见解的文章,分别是道哥的《我对计算的理解》和吴军的《中国算力的危与机》; 第二个触点是最近阅读了王坚院士的《在线》这本书; 第三个触点是阿里云内部的AEPC考试,对阿里云产品体系有了一个更加全面完整的了解。 这三个触点学习下来,发现自己对云计算的理解还是很浅薄。借助本篇文章,以「输出倒逼输入」串联一下这三个触点的学习和思考内容,作为总结。 云计算,云是一种形态,其关键在于计算。计算离不开算力。但算力和计算是两个东西。因此理解云计算需要先清楚两个东...

  ej6Fb1sGOJN2   2023年11月02日   28   0   0 云计算

作者最近尝试写了一些Rust代码,本文主要讲述了对Rust的看法和Rust与C的一些区别。 背景 S2在推进团队代码规范时,先后学习了盘古编程规范,CPPcoreguidelines,进而了解到clang-tidy,以及GoogleChrome在安全方面的探索。 C是一个威力非常强大的语言,但是能力越大,责任越大,它的内存安全性问题一直饱受诟病。NSA甚至明确提出,停止使用C这种内存不安全的语言。 C本身的确提出了一系列改进方案,但是迟迟不见落地。Bjarne对于NSA挑战给出的方案也只能部分解决问题,并且看起来落地也是遥遥无期。 Rust作为一个新晋语言,是Moz...

  ej6Fb1sGOJN2   2023年11月02日   18   0   0 Rust

导读 Rust作为一门学习曲线十分陡峭的语言,掌握其核心基础数据结构的内存分布对学习Rust会有很大的帮助,本文由浅入深仔细介绍了Rust的各个数据结构在内存中的分布情况。 Rust作为一门学习曲线十分陡峭的语言,掌握其核心基础数据结构的内存分布对学习Rust会有很大的帮助,即使对于已经熟悉Rust的同学,深入数据结构分布也能帮助到调优Rust程序。 接下来,我会由浅入深仔细介绍Rust的各个数据结构在内存中的分布情况,帮助大家学习Rust。 先决条件Prerequisite 在开始介绍之前,我们先做这个几个假设,来更好地帮助后续文章的展开...

  ej6Fb1sGOJN2   2023年11月02日   42   0   0 Rust

    引言 为什么会写这篇文章?主要是因为项目中的代码大量使用了带virtual关键字的类,想通过本文浅谈一下。virtual并没有什么超能力可以化腐朽为神奇,它有其存在的理由,但滥用它是一种非常不可取的错误行为。本文将带你一步一步了解virtual机制,为你揭开virtual的神秘面纱。   为什么需要virtual 假设我们正在进行一个公共图形化库的设计实现,其中涉及2d和3d坐标点的打印,设计出Point2d和Point3d的实现如下: include<stdio.h> classPoint2d{ public: Point2d(intx=...

  ej6Fb1sGOJN2   2023年11月02日   57   0   0 C++

在广告系统实践中,精排服务基于gRPC协议调用TF-Serving在线推理服务。 相信很多业务已经使用过gRPC相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调用更绕不开gRPC,所以很有必要理解gRPC的原理。 本文通过简要介绍抓包分析一次gRPC的调用过程,逐步认识gRPC。 概述 gRPC是谷歌推出的一个开源、高性能的RPC框架。默认情况下使用protoBuf进行序列化和反序列化,并基于HTTP/2传输报文,带来诸如多请求复用一个TCP连接(所谓的多路复用)、双向流、流控、头部压缩等特性。gRPC目前提供C、Go和JAVA等语言版本,对应gRPC、gRPC-Go和gRPC...

  ej6Fb1sGOJN2   2023年11月02日   19   0   0 Go

了解过Hex六边形架构、Onion洋葱架构、Clean整洁架构的同学可以将本篇文章介绍的实践方法与自身项目代码架构对比并互通有无,共同改进。没了解过上述架构的同学可以学习一种新的架构方法,并尝试将其应用到业务项目中,降低项目维护成本,提高效率。 本文提及的架构主要指项目组织的“代码架构”,注意与微服务架构等名词中的服务架构进行区分。   1.为什么要有代码架构 历史悠久的项目大都会有很多开发人员参与“贡献”,在没有好的指导规则约束的情况下,大抵会变成一团乱麻。剪不断,理还乱,也没有勇士开发者愿意去剪去理。被迫接手的勇士开发者如果想要增加一个小需求,可能需要花10倍的时间去理顺业务逻...

  ej6Fb1sGOJN2   2023年11月02日   56   0   0 Go

本文针对Golang与Java的基础语法、结构体函数、异常处理、并发编程及垃圾回收、资源消耗等各方面的差异进行对比总结,有不准确、不到位的地方还请大家不吝赐教。 一、基础语法 Golang:编码风格及可见域规则严格且简单;Java:来说层次接口清晰、规范,主要表现有以下这些。 1、变量 a、变量声明及使用 在Java中:变量可以声明了却不使用 publicstaticStringtoString(intnum){intdata=num;returnString.valueOf(num);}   Golang中:声明的变量必须被使用,否则需要使用_来替代掉变量名,...

  ej6Fb1sGOJN2   2023年11月02日   34   0   0 Go

本文介绍了Go微服务体系发展与选型,过去一年Dubbo-go社区的飞速发展以及对未来的展望。   一、Go微服务体系发展与选型   随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在Kubernetes和容器技术加持下,云原生微服务已经成为了主流解决方案。而Go语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,其中比较流行的包括Go-micro、Go-zero、Dubbo-go等。作为Dubbo微服务体系中多语言实现的一员,在2022年Dubbo-go以微服务领跑者的角色积极拥抱云原生标准,探索了Proxyles...

  ej6Fb1sGOJN2   2023年11月02日   17   0   0 Go

目前go语言不仅在阿里集团内部,在整个互联网行业内也越来越流行,本文把高德过去go服务开发中的性能调优经验进行总结和沉淀,希望能为正在使用go语言的同学在性能优化方面带来一些参考价值。 前言 go语言凭借着优秀的性能,简洁的编码风格,极易使用的协程等优点,逐渐在各大互联网公司中流行起来。而高德业务使用go语言已经有3年时间了,随着高德业务的发展,go语言生态也日趋完善,今后会有越来越多新的go服务出现。在任何时候,保障服务的稳定性都是首要的,go服务也不例外,而性能优化作为保障服务稳定性,降本增效的重要手段之一,在高德go服务日益普及的当下显得愈发重要。此时此刻,我们将过去go...

  ej6Fb1sGOJN2   2023年11月02日   37   0   0 Go

本文作者从评判标准、功能评测、性能评测等多方面剖析三方库哪些家强,并给出了比较务实的建议。 引言 为了小伙伴理解,汇总了一下文章中会提及的术语名词解释,请放心品读,欢迎一起讨论交流!   你真的了解Go标准库吗? 问题一:标准库可以反序列化普通的字符串吗?执行下面的代码会报错吗? varsstring err:=json.Unmarshal([]byte(`"Hello,world!"`),&s) assert.NoError(t,err) fmt.Println(s) //输出: //Hello,w...

  ej6Fb1sGOJN2   2023年11月02日   22   0   0 Go

一、概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发、测试、以及上线等。每个阶段对应的环境参数配置我们会使用不同的参数。比如数据库的连接字符串,开发环境一般我们都是连接的测试库。以前这种情况通常是COPY两个同名的配置文件来进行处理,然后在本地就使用本地的配置,生产环境就使用生产环境的配置文件,十分麻烦。而ASP.NETCORE利用环境变量来动态配置JSON文件对类似这种需求提供了支持,方便我们更好的去做这些事情。 二、ASP.NETCore环境 ASP.NETCore使用ASPNETCORE_ENVIRONMENT来标识运行时环境。。 ASP.NETCore使用...

  ej6Fb1sGOJN2   2023年11月02日   26   0   0 .NET

本文为大家介绍使用.NETCore部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.netcore在linux下的发布与运行全过程,本文皆在总结了一些经验与笔记在部署过程中遇到的一些问题,同时分享给大家,供大家参考,欢迎讨论交流。 1、Linux操作系统、Xshell、Xftp安装 操作系统可选择你比较熟悉的Linux发行版,如果你是第一次接触Linux,推荐使用CentOs,因为本文的内容都是在CentOs中进行演示的。 至于系统的安装,你可以选择云服务器,或者使用虚拟机安装。虚拟机安装C...

  ej6Fb1sGOJN2   2023年11月02日   40   0   0 .NET

在.NETCore部署到linux(CentOS)最全解决方案,常规篇一文,我们详细讲解了传统的.NETCore部署到Linux服务器的方法,学到了Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.netcore在linux下的发布与运行全过程。本文讲讲解通过使用Supervisor+Nginx的组合来实现.netcore的高效部署。 1、Supervisor 1.1、Supervisor介绍 官网:http://supervisord.org,源码位置:https://github.com/Supervisor/supervisor ...

  ej6Fb1sGOJN2   2023年11月02日   50   0   0 .NET

在前两篇: .NETCore部署到linux(CentOS)最全解决方案,常规篇 .NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。 1、使用Jexus作为web服务器 Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关服务器,以支持ASP.NET、ASP.NETCORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。可以这样说,Jexu...

  ej6Fb1sGOJN2   2023年11月02日   33   0   0 .NET

通过前面三篇: .NETCore部署到linux(CentOS)最全解决方案,常规篇 .NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .NETCore部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx或Jexus) 通过前面三篇文章的介绍,我们已经对.netcore多方案部署到linux下有了非常全面的认识,小型团队已经足够使用。虽然目前的方案可以实现一键部署更新,但是还是需要登陆到linux服务器去执行相应的命令。 显示,这不是最优的方案,那么还有没有更好的方案呢?比如:当我们提交给git仓库后,自动出发...

  ej6Fb1sGOJN2   2023年11月02日   54   0   0 .NET

    1.说说进程和线程的区别? 进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,使得操作系统具有更好的并发性。线程基本不拥有系统资源,只有一些运行时必不可少的资源,比如程序计数器、寄存器和栈,进程则占有堆、栈。 2.知道synchronized原理吗? synchronized是java提供的原子性...

  ej6Fb1sGOJN2   2023年11月01日   19   0   0 Java

一、相关知识JDKString的实现 字符串在JDK8及JDK9之后的实现有很大不同的。JDK8中,String的结构是这样的: 1.1StringJDK8的实现 classString{ char[]value; //构造函数会拷贝 publicString(charvalue[]){ this.value=Arrays.copyOf(value,value.length); } //无拷贝构造函数 String(char[]value,booleanshare){ //assertshare:"unsharednotsupported"; ...

  ej6Fb1sGOJN2   2023年11月01日   44   0   0 Java

  一、背景 开发一款Idea插件,实现对yaml文件的定制化格式检查。 !!后指定的类路径是否准确 yaml中的key是否equal类中field的name value是否能够转换成类中field的类型 …… 完成代码功能上线后,使用过程发现很多问题。后在主管帮助下,对代码进行了重构。事后对重构前后代码的好坏进行分析总结,文章下面将从 结构设计、代码可读性、鲁棒性3个角度对重构前后代码作比较。 二、代码比较 1 结构设计 before: after: 比较: after:增...

  ej6Fb1sGOJN2   2023年11月01日   20   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~