精华内容
下载资源
问答
  • 华为云讲解:2.Istio Pilot 与...文章目录华为云讲解:2.Istio Pilot 与服务发现服务发现看图说话 在Istio里面Service A 访问ServiceB 如何做到服务发现的实现Istio 结合Kubernetes 做服务发现总结配置管理流量规则...

    华为云讲解:2. Istio Pilot 与服务发现


    主要点Pilot

    image-20200213153553708

    Pilot 与“数据面”交互完成服务发现和配置管理的。

    服务发现

    image-20200213153724777

    写一个a.app 名字就导入了一个后端但是我们不知道这个后端服务是88还是99。虽然在微服务讲服务发现说的很多,但是这是做微服务的基本手段,如果只是一个单体的应用,或者两个很简单的应用,都可以不用服务发现。

    image-20200213154043618

    结合springCloud的服务注册发现 XYZ Service 访问ABCservice的时候,ABCservice先把自己的信息放Service Registration,也就是EurekaServer。然后服务调用者 XYZ Service 手里有个Eureka cilent 去Service Registration拿到服务发现的信息,根据负载均衡策略ribbon访问真正的实例。

    image-20200213154539663

    看图说话 在Istio里面Service A 访问ServiceB 如何做到的

    首先ServiceA 出口流量先被Proxy 拦截掉,Proxy会链接服务发现的地址 Pilot,从上面拿到对应服务发现的数据,就是服务实例的应用关系,同时也会拿到一个负载均衡策略,然后访问ServiceB ,如果ServiceB 有若干个实例,图中有三个实例,根据负载均衡策略访问到对应的ServiceB 副本,当然在访问到ServiceB 的容器的时候是先进入ServiceB 的Proxy。

    可以看出无论什么架构的服务发现都几乎一样

    Service Mesh服务发现架构特点,因为Service和Proxy在一起的,Proxy会把所访问Service的流量都给他拦截,但是Service本身感知不到Proxy的存在,在访问特别频繁特别密集的时候,提供给这种方式,对服务之间的访问治理是非常有用的,因此也是基于这种思路这种架构设置做它的功能的。

    在这里插入图片描述

    底层实现

    Pilot里面有两个东西一个是Abstart Model,另一个是 Platform Adapter,

    Abstart Model是存放各种服务信息

    Platform Adapter,可以适配各种平台服务发现比如Eureka

    服务发现的实现

    image-20200213160414656

    Pilot 里面有个ServiceControllter,这个里面有个Eureka Cilent ,Eureka Cilent 去真正的Eureka Server 服务拿到服务列表 ,Discoveryserver维护成服务发现数据,然后通过rpc 接口提供给Envoy使用

    Eureka由于不在维护,在Istio1.0之后的版本Pilot的Eureka Cilent 已经被干掉了

    Istio 结合Kubernetes 做服务发现

    结合基于Eureka 的例子,我们可以看出也是通过ServiceControllter通过List/Watch的方式去ApiServer 拿去到服务数据,然后Discoveryserver维护成服务发现数据,然后通过rpc 接口提供给Envoy使用,当访问出口请求的时候根据对应的负载均衡策略选择一个服务实例发起访问。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvow5nbZ-1581741461373)(https://gitee.com/zhangchengji/kubeSource/raw/master/image/image-20200213160855225.png)]

    image-20200213161243770

    虽然有个platform Adapter 可以适配各种平台但他支持最好的就是kubernets, 看图其实Istio service 就是k8s的service,一个版本把流量导入到另一个版本这样做灰度发布在Istio其实很简单。

    image-20200213162144795

    K8s 的服务发现也是通过kube-proxy 去apiserver 拿到对应服务列表信息,访问到具体的服务的。K8s 本身也是有服务发现的机制的。

    image-20200213162507516

    image-20200213162654826

    Istio的服务发现其实通过Pilot去k8s的apiserver,然后取的etcd的配置数据,然后 通过Pilot下发到Envoy。从这张图中可以看出k8s和Istio是非常紧密的关系,只要Istio有的功能都是基于k8s构建的。

    总结

    Pilot 基于提供的Platform Adapter机制做服务发现,可以适配各种不同的后端,当前支持最好的k8s

    配置管理

    image-20200213163453693

    在这里Pilot 作为一个规则维护的角色,用户下发规则到Pilot ,然后通过Proxy根据规则,图中的例子说灰度发布一个场景,99% 流量到v1.5版本,1%到v2.0版本,是在服务发起方就决定的这个规则调用,而不服务访问方。

    流量规则

    • VirtualService
    • DestinationRule
    • ServiceEntry
    • Gateway

    VirtualService

    image-20200213164224561

    VirtualService 其实就是一个Service,一个调用方满足什么样的条件,就路由到对应服务版本。满足什么样的条件去什么地方。包括在这个过程中进行服务的一下治理包括重写重试,故障注入等。

    VirtualService 支持三种协议 http 七层协议控制东西更多,tls ,tcp。

    VirtualService 流量规则:

    • match
    • route
    • Redirect
    • Timeout
    • Rearies
    • Fault
    • Mirror

    VirtualService做到工作就是一个服务怎么被访问,访问规则。满足条件访问什么样的服务,访问的时候做一些控制。

    DestinationRule

    image-20200213165751386

    DestinationRule 目标规则

    服务治理:负载均衡,熔断容错,目标流量管理,最大连接等等,非常广泛

    DestinationRule 是对目标配置一定规则,比如负载均衡策略

    关键字TrafficPolicy 流量策略里面有很多定义比如loadBalancer connectionPool数据库连接数 outlierDetectio异常链检查 tls配置等,比如我但是我的服务访问过大配置一个最大连接数,担心服务出现故障配置一个重试机制,配置一个超时机制,等等保证我的服务不会被请求太多,而请求挂掉这些东西都是定义在DestinationRule。

    它还可以对pod定义一些规则

    DestinationRule配合VirtualService可以把服务治理放大最大化。一个服务怎么被访问一个服务怎么去治理怎么去控制有一个完整的描述。 这个东西不应该叫配置更应该叫描述文件。

    ServiceEntry && Gateway

    image-20200213171425517

    ServiceEntry

    打个比方一个服务访问ServiceMesh外面的服务,假设这个服务他不在集群中,肯定不能注册的,比如访问外面的mysql ,mysql不一定在哪里装着只有一个地址,但是mysql 访问我也想做一些服务治理,就像访问内部服务一样。比如看一下为什么访问慢,可以把它调用链加到ServiceEntry,ServiceEntry就可以把它加入到服务发现中了,就可以进行治理了。

    Gateway

    功能就是类似于Ingress nginx 服务暴露,也就是说可以把ServiceMesh的服务发布成外部一个可以访问的服务。

    规则下发流程

    在k8s 里面如何下发规则进行治理的。

    image-20200213172524745

    流程:

    用户通过kubectl 调用ApiServer进行配置一些crd(资源规则)比如VirtualService、DestinationRule等,把这些规则写入到etcd ,然后Pilot里面有个ConfigController他一直list-watch这些资源对象拿到之后, 然后RPC 服务DiscoverServer去取到资源数据,转换成Envoy能识别的规则,Envoy拿到这个规则进行服务治理。

    规则定义

    在Istio的定规则是长左边这样,在Envoy就长右边这样。如下图:

    image-20200213173858653

    满足这样条件走v2其他走v1,

    Envoy通过Istio定义的描述转成自己的描述,但是Envoy自己也有自己的规则描述

    规则执行位置

    image-20200213174441188

    大部分规则都是配置在服务提供方的,而规则的执行都是服务发起方

    Kubernetes & IS stio结合

    微服务运行在容器里面而编排工具是k8s已经是业界的标准,而微服务治理使用Istio。

    image-20200213174947582

    服务发现 Istio 比较Spring cloud

    1. Istio基于k8s的数据 来做的,这样它里面的数据跟k8s都是一致的。

    2. 治理规则:治理规则基于k8s,无需专门的配置服务器管理服务,

    而spring cloud必须要有配置中心模块,不在乎配置长什么样,只要往里写,就可以对接后端存放下来,提供通道,把config刷到SDK上面,而在IStio里面这些工作都不需要做,只要一个配置其他东西都有了,0工作量。跟k8s一样只要定一个规则配置yaml就可以。

    1. 服务发现的方式:无需专门服务注册,他是取k8s server的服务数据

    image-20200213175251898

    比较

    1. 服务注册:首先必须要做注册服务器,微服务起来必须连接服务注册中心(Eureka),把自己的地址汇报上去。
    2. 服务发现方式:每个服务必须要写服务的注册地址,获取到要连接服务信息地址。注册的时候写把服务注册到哪里,服务发现的时候就要写从哪里连接地址。拿下来做服务发现,然后做访问。
    3. 致命问题:服务发现不一致:springcloud的服务注册中心(Eureka)和k8s apiserver是两个服务发现的通道,Eureka在k8s 完全不用,而是用自己的。k8s容器化部署后服务比较轻量,但是运行服务的节点会经常变的,也就是我们常说的漂移,如果死掉就会重新调度,说不定就调度到别的节点上去。这样服务的IP就变了,但是出现这种情况注册中心的地址并没有更新新地址,还是老地址,导致服务访问对应服务的时候就是访问的老地址。就访问不同了。
    4. 治理规则:治理规则和服务注册一起,获取单独的配置服务

    image-20200213180423764

    展开全文
  • Redis 从入门到精通

    千人学习 2019-09-21 14:21:06
    【超实用课程内容】 本课程主要内容主要包含Redis API基本操作以及Redis 集群 哨兵等核心内容的讲解,结合实际案例,做到学完即可解决实际问题。 【课程如何观看?】 PC端:...
  • 将Tomcat添加到服务

    千次阅读 2017-12-06 11:31:10
    tomcat 服务 自启动

    1.在tomcat安装目录bin文件夹下shift右键在当前文件夹打开命令窗口

    2.输入 service.bat install name安装服务

    name为你想安装的tomcat服务名

    3.service.bat uninstall 卸载服务

    4.自启动在service文件下倒数几行

    echo The service ‘%SERVICE_NAME%’ has been installed.

    这句是输出服务安装成功,在这之前加一句

    sc config %SERVICE_NAME% start= auto

    展开全文
  • Spring Cloud 优雅下线以及灰度发布

    千次阅读 多人点赞 2020-10-20 10:43:55
    如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。 实际上,...

    前言

    在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。

    实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PIDkill -9 PID都是暴力杀死服务,相对于kill -9 PID来说,kill PID就是优雅的。但如果单独拿kill PID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。

    因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀死服务,已经足够优雅了。常见的优雅解决方案,主要包括优雅下线和灰度发布。而实际上,灰度发布的范围就已经包含优雅下线了。最后,在本文中,我们主要讲述基于 Spring Cloud 和 Euraka 的优雅下线以及灰度发布。

    优雅下线

    常见的下线方式

    方式一:kill PID

    使用方式:kill java进程ID

    该方式借助的是 Spring Boot 应用的 Shutdown hook,应用本身的下线也是优雅的,但如果你的服务发现组件使用的是 Eureka,那么默认最长会有 90 秒的延迟,其他应用才会感知到该服务下线,这意味着:该实例下线后的 90 秒内,其他服务仍然可能调用到这个已下线的实例。因此,该方式是不够优雅的 。

    方式二:/shutdown端点

    Spring Boot 提供了/shutdown端点,可以借助它实现优雅停机。

    使用方式:在想下线应用的applicationyml中添加如下配置,从而启用并暴露/shutdown端点:

    management:
      endpoint:
        shutdown:
          enabled: true
      endpoints:
        web:
          exposure:
            include: shutdown
    

    发送 POST 请求到/shutdown端点

    • curl -X http://你想停止的服务地址/actuator/shutdown

    该方式本质和方式一是一样的,也是借助 Spring Boot 应用的 Shutdown hook 去实现的。

    方式三:/pause端点

    Spring Boot 应用提供了/pause端点,利用该端点可实现优雅下线。

    使用方式:在想下线应用的application.yml中添加配置,从而启用并暴露/pause端点:

    management:
      endpoint:
        # 启用pause端点
        pause:
          enabled: true
        # 启用restart端点,之所以要启用restart端点,是因为pause端点的启用依赖restart端点的启用
        restart:
          enabled: true
      endpoints:
        web:
          exposure:
            include: pause,restart
    

    发送 POST 请求到/actuator/pause端点:

    • curl -X POST http://你想停止的服务实例地址/actuator/pause

    执行后的效果类似下图:

    down
    如图所示,该应用在 Eureka Server 上的状已被标记为DOWN,但是应用本身其实依然是可以正常对外服务的。在 Spring Cloud 中,Ribbon 做负载均衡时,只会负载到标记为UP的实例上。利用这两点,你可以:先用/pause端点,将要下线的应用标记为DOWN,但不去真正停止应用;然后过一定的时间(例如 90 秒,或者自己做个监控,看当前实例的流量变成 0 后)再去停止应用,例如kill应用。

    • 缺点 & 局限
    缺点描述
    不同的版本配置不大一样早期的 Spring Cloud 版本中,pause端点是不依赖restart端点的
    无法和 Eureka 的健康检查配合使用如果你的服务发现组件用的是 Eureka,并且你的应用开启了健康检查eureka.client.healthcheck.enabled = true,那么/pause端点无效

    方式四:/service-registry端点

    使用方式:在想下线应用的application.yml中添加配置,从而暴露/service-registry端点:

    management:
      endpoints:
        web:
          exposure:
            include: service-registry
    

    发送 POST 请求到/actuator/service-registry端点:

    curl -X "POST" "http://localhost:8000/actuator/service-registry?status=DOWN" \
       -H "Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8"
    

    实行后的效果类似如下图:
    down

    优雅的下线方式

    在上文中,我们讲述了四种常见的下线方式,对比来看,方式四 是一种比较优雅的下线方式。

    在实际项目中,我们可以先使用/service-registry端点,将服务标记为DOWN,然后监控服务的流量,当流量为 0 时,即可升级该服务。当然,这里假设我们部署了多个服务实例,当一个服务实例DOWN掉之后,其他服务实例仍然是可以提供服务的,如果就部署一台服务的话,那么讨论优不优雅就没那么重要了。

    除了上述的下线方式之外,还有一种利用EurekaAutoServiceRegistration对象达到优雅下线的目标。

    • 执行eurekaAutoServiceRegistration.start()方法时,当前服务向 Eureka 注册中心注册服务;
    • 执行eurekaAutoServiceRegistration.stop()方法时,当前服务会向 Eureka 注册中心进行反注册,注册中心收到请求后,会将此服务从注册列表中删除。

    示例代码如下:

    @RestController
    @RequestMapping(value = "/graceful/registry-service")
    public class GracefulOffline {
    
        @Autowired
        private EurekaAutoServiceRegistration eurekaAutoServiceRegistration;
    
        @RequestMapping("/online")
        public String online() {
            this.eurekaAutoServiceRegistration.start();
            return "execute online method, online success.";
        }
    
        @RequestMapping("/offline")
        public String offline() {
            this.eurekaAutoServiceRegistration.stop();
            return "execute offline method, offline success.";
        }
    }
    

    到这里,我们已经介绍了两种相对优雅的下线方式了。具体如何操作,我们可以根据实际上情况进行包装,或者利用自动化的脚本来实现更加优雅的下线方式。

    灰度发布

    蓝绿部署

    蓝绿部署,英文名为 Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线的部署方式。

    如何保证系统不间断提供服务呢?那就是同时部署两个集群,但仅对外提供一个集群的服务,当需要升级时,切换集群进行升级。蓝绿部署无需停机,并且风险较小。其大致步骤为:

    1. 部署集群 1 的应用(初始状态),将所有外部请求的流量都打到这个集群上
    2. 部署集群 2 的应用,集群 2 的代码与集群 1 不同,如新功能或者 Bug 修复等
    3. 将流量从集群 1 切换到集群 2
    4. 如集群 2 测试正常,就删除集群 1 正在使用的资源(例如实例),使用集群 2 对外提供服务

    因为在使用蓝绿部署的方式时,我们需要控制流量,所以我们需要借助路由服务,如 Nginx 等。

    滚动部署

    滚动部署,英文名为 Rolling Update,同样是一种可以保证系统在不间断提供服务的情况下上线的部署方式。和蓝绿部署不同的是,滚动部署对外提供服务的版本并不是非此即彼,而是在更细的粒度下平滑完成版本的升级。

    如何做到细粒度平滑升级版本呢?滚动部署只需要一个集群,集群下的不同节点可以独立进行版本升级。比如在一个 12 节点的集群中,我们每次升级 4 个节点,并将升级后的节点重新投入使用,周而复始,直到集群中所有的节点都更新为新版本。

    这种部署方式相对于蓝绿部署,更加节约资源,因为它不需要运行两个集群。但这种方式也有很多缺点,例如:

    1. 没有一个确定 OK 的环境。使用蓝绿部署,我们能够清晰地知道老版本是 OK 的,而使用滚动发布,我们无法确定。
    2. 修改了现有的环境。
    3. 如果需要回滚,很困难。举个例子,在某一次发布中,我们需要更新 100 个实例,每次更新 10 个实例,每次部署需要 5 分钟。当滚动发布到第 80 个实例时,发现了问题,需要回滚。这时,我们估计就要疯了。
    4. 有的时候,我们还可能对系统进行动态伸缩,如果部署期间,系统自动扩容/缩容了,我们还需判断到底哪个节点使用的是哪个代码。尽管有一些自动化的运维工具,但是依然令人心惊胆战。

    并不是说滚动发布不好,滚动发布也有它非常合适的场景。

    金丝雀部署

    金丝雀部署又称灰度部署(或者,灰度发布),英文名为 Canary Deployment,是指在黑与白之间,能够平滑过渡的一种发布方式。

    金丝雀的名称来源于「矿井中的金丝雀」,早在 17 世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感,空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

    我们来看一下金丝雀部署的步骤:

    1. 准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件
    2. 从负载均衡列表中移除掉“金丝雀”服务器
    3. 升级“金丝雀”应用(切断原有流量并进行部署)
    4. 对应用进行自动化测试
    5. 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)
    6. 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器(否则就回滚)

    在金丝雀部署中,常常按照用户量设置路由权重,例如 90% 的用户维持使用老版本,10% 的用户尝鲜新版本。不同版本应用共存,经常与 A/B 测试一起使用,用于测试选择多种方案。金丝雀部署比较典型的例子,就是我们在使用某个应用的时候,该应用邀请我们进行“内测”或者“新版本体验”,如果我们同意了,那么我们就成了金丝雀。


    参考资料

    展开全文
  • 微信订阅号每天发一次,微信服务号一个月发四次,这是微信定下的规定,无法更改,所以在很多人申请的时候就非常纠结,服务号一个月才4条,相对订阅号特别少。今天来给大家分享一下微号帮平台上的操作,微信服务号...

    微信订阅号每天发一次,微信服务号一个月发四次,这是微信定下的规定,无法更改,所以在很多人申请的时候就非常纠结,服务号一个月才4条,相对订阅号特别少。今天来给大家分享一下微号帮平台上的操作,微信服务号怎么一天发一条消息,甚至发三条消息!!!

    1、登录微号帮平台,添加公众号授权


     
    没有添加公众号,无法进行任何操作!!!授权成功再继续,授权码支持发送给公众号管理员扫码、手机微信上长按识别

    2、我的公众号-微信公众号托管
     
    选择功能管理,进入正式操作

    3、左侧工具栏选择
     
    服务号每天多次推送功能:48小时信息推送

    4、48小时信息推送
    (1)新建一条推送
     

    所有信息填写完毕,保存!

    (2)确认48小时推送
     
    开启推送前,建议先预览效果,确保设置内容正常显示

    (3)每天定点循环推送

    设置好推送时间,勾选开启循环发送,根据推送时间(小时和分钟),每天一个点推送内容

    5、获取永久素材链接


     
    通过获取素材永久链接,这个链接可以使用在48小时信息推送的超链接里,直接推送素材图文内容

    展开全文
  • 第二章:servlet、过滤器、监听器、拦截器配置及使用场景 第三章:讲解日志、静态资源、启动加载数据处理方式 第四章:数据库配置,jdbctemplate、mybatis、事务原理及实现 第五章:服务发布部署
  • 业务需求: 全国各省都有相同系统,系统上配置省份标识,想... 各省系统不能交叉调用,如何通过不同的zone来控制访问,例如山东的服务请求下游服务,只能请求山东的服务,不能请求到河南。 请大神指点如何实现
  • Spring cloud服务如何做到优雅下线

    千次阅读 2018-01-17 10:05:12
    利用Spring Boot Actuato的管理端点 ...修改服务提供者的pom.xml添加依赖 org.springframework.boot spring-boot-starter-actuator 配置启用shutdown endpoints.shutdown.enabled=true 本地启动
  • ,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改); 自治性要求很高 ,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能...
  • 实施工程师面试题(答案)

    万次阅读 多人点赞 2019-06-21 11:33:32
    自己一定要理解服务,理解服务能干什么,能做到什么,结合公司的业务能给客户提供什么服务服务过程中是否能给客户提供优秀的服务,倾听客户的意见,持续改进服务方式。尽量在事件发生之前,避免或杜绝客户的投诉,...
  • DDOS入门介绍(一):DDOS简介

    万次阅读 多人点赞 2017-05-27 15:58:31
    定义分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常该攻击方式利用...
  • 当进入一个页面的时候,想做一个轮询,怎么做到每隔30s就建立连接,访问接口数据。
  • service粘性等的那4种方式试了,三星的可以,小米老款手机可以,新款不行,华为新款也不行,还有魅族什么的,都不行,新款的手机上都有一个安全中心,只有在安全中心里面添加上允许app自启动才可以 ...
  • 举一个例子, 用户管理一个服务, 账务管理一个服务 这里要显示每一个用户信息和余额, 各个服务数据是独立的, 原来在关系型表中通过联很好实再, 但划分微服务后,一般如何处理?
  • Spring cloud服务发现之服务提供者和服务消费者 1.服务提供者 2.服务提供者 3.启动运行 4.综上 1.服务提供者根据上节讲述的服务注册之Eureka注册中心,这节讲述服务提供者和服务消费者,首先新建一个工程,...
  • 在实际环境中,如何做到Dubbo服务的热部署,不影响任何一个用户的请求。做到无感知升级。
  • 浅谈服务治理、微服务与Service Mesh Spring Cloud 之“出身名门望族” 作为当下最火热的微服务框架,Spring Cloud的名字可以说是无人不知、无人不晓,凭借之前Spring Framework的良好群众基础和Cloud这个具有...
  • 在网络中药做到有条不紊地交换数据,就必须遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及相关的 同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network ...
  • 写给那些傻傻想做服务器开发的朋友

    万次阅读 多人点赞 2018-12-04 17:41:41
    这里可能比喻有点不恰当,与客户端开发相比,优秀的服务器开发应该尽量在单机服务上的性能做到极致,必须尽量利用少的资源给尽可能多的客户端服务(在资源总量有限的情况下,你为单个客户端服务使用的资源越少,你才...
  • 解决:该公众号提供的服务出现故障,请稍后重试

    万次阅读 多人点赞 2018-07-01 22:14:31
    最近在进行微信公众号接口开发,做到自动回复的接口开发时,我按照接入指南接口文档开发好功能后,推上线了测试(你也可以使用ngrok内网穿透)调试发现:总是出现该公众号提供的服务出现故障,请稍后重试的提示。...
  • 搭建私人邮件服务器

    万次阅读 多人点赞 2019-05-24 14:26:54
    怎样使用本地服务器搭建一个邮箱,这样就可以脱离qq或者其他企业邮箱的限制,即可以做到节省成本,又可以得到收发邮件的一个保密性。 这里我们先展示一下本地搭建邮箱服务器后的成功例子: 可以看到,这里qq邮箱...
  • 工作上项目的后台进行微服务改造后已经平稳运行将近1年了,起初项目为若干个单体...在微服务架构的帮助下,新接入业务可以更专注于服务的实现,同时各个服务的功能也可以进行快速整合。目前平台的研发告一段落,后...
  • 实现音乐播放器后台Service服务一直存在的解决思路

    万次阅读 热门讨论 2015-08-15 11:08:25
    最近实现一个音乐播放器的小项目,实现后台播放歌曲的功能,即使退出程序也可以一直播放歌曲,服务不被停止。 实现这个功能的过程中遇到了有两个问题: 问题1、退出程序之后,service播放歌曲的服务在后台执行,...
  • 15个C++项目列表

    万次阅读 多人点赞 2016-11-30 18:02:05
    服务器开发中 Web 服务是一个基本的代码单元,将服务端的请求和响应部分的逻辑抽象出来形成框架,能够做到最高级别的框架级代码复用。项目将综合使用 C++11 及 Boost 中的 Asio 实现 HTTP 和 HTTPS 的服务器框架。 ...
  • 服务器开发中 Web 服务是一个基本的代码单元,将服务端的请求和响应部分的逻辑抽象出来形成框架,能够做到最高级别的框架级代码复用。项目将综合使用 C++11 及 Boost 中的 Asio 实现 HTTP 和 HTTPS 的服务器框架。 ...
  • 服务器集群是什么

    万次阅读 多人点赞 2018-11-22 17:36:48
    扫盲 以前的项目是 一个服务器就...数据服务与应用服务分离,我们给应用服务器配置更好的CPU、内存 给数据服务器更好更快的硬盘 缓存提高访问速度 假设Applicate Server 为Tomcat,Tomcat成为了一个瓶颈,我...
  • 如何实现RPC远程服务调用

    千次阅读 2018-09-07 10:29:05
    想要完成RPC调用,需要解决四个问题: 客户端与服务端如何建立网络连接 服务端如何处理请求 数据传输采用什么协议 数据该如何序列化和反序列化 1.客户端与服务端如何建立网络连接 HTTP通信 ...
  • AWS核心服务概览

    千次阅读 2017-09-02 06:56:52
    做到这一点看似容易,实际上是Amazon完善的基础设施使其变得可行。 这里说一些题外话,也是最近的感受。之前曾在国内电商工作过,确实对比才能看出不足和需要改进之处,反之衬托出了Amazon技术的完善和成熟。举...
  • 客户机服务器模式(C/S模式)

    万次阅读 2019-08-19 19:20:06
    现在的LAN,Internet提供的多种服务都是这种模式 概述 客户机 通常在一个LAN上链接由多台网络工作站,就成为客户机,每台客户机都是具有一定处理能力的自主计算机,客户的进程都在上面运行。 服务器 是一台性能更高...
  • k8s-(七)暴露服务的三种方式

    千次阅读 2021-01-11 21:05:01
    总结 最大缺点是每一个用 LoadBalancer 暴露的服务都会有它自己的 IP 地址和端口,不能做到一个ip地址就可以访问所有服务。 三、Ingress 采用 NodePort 方式暴露服务面临问题是,服务一旦多起来,NodePort 在每个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 562,287
精华内容 224,914
关键字:

如何做到服务