dispatcher

复杂环境下落地Service Mesh的挑战与实践

寵の児 提交于 2021-01-13 04:33:49
总第426 篇 2020年 第50篇 在私有云集群环境下建设 Service Mesh ,往往需要对现有技术架构做较大范围的改造,同时会面临诸如兼容困难、规模化支撑技术挑战大、推广困境多等一系列复杂性问题。本文会系统性地讲解在美团在落地 Service Mesh 过程中,我们面临的一些挑战及实践经验,希望能对大家有所启发或者帮助。 一、美团服务治理建设进展 1.1 服务治理发展史 首先讲一下 OCTO,此前美团技术团队博客也分享过很多相关的文章,它是美团标准化的服务治理基础设施,现应用于美团所有事业线。OCTO 的治理生态非常丰富,性能及易用性表现也很优异,可整体概括为 3 个特征: 属于公司级的标准化基础设施。技术栈高度统一,覆盖了公司 90% 以上的应用,日均调用量达数万亿次。 经历过较大规模的技术考验。覆盖数万个服务、数十万个节点。 治理能力丰富。协同周边治理生态,实现了 SET 化、链路级复杂路由、全链路压测、鉴权加密、限流熔断等治理能力。 回顾美团服务治理体系的发展史,历程整体上划分为四个阶段: 第一阶段是基础治理能力统一 。实现通信框架及注册中心的统一,由统一的治理平台支撑节点管理、流量管理、监控预警等运营能力。 第二阶段重点提升性能及易用性 。4 核 4GB 环境下使用 1KB 数据进行 echo 测试,QPS 从 2 万提升至接近 10 万,99 分位线 1ms

Okhttp解析—Okhttp概览

血红的双手。 提交于 2020-12-31 12:04:33
Okhttp解析—Okhttp概览 Okhttp作为目前Android使用最为广泛的网络框架之一,我们有必要去深入了解一下,本文是Okhttp解析的第一篇,主要是从宏观上认识Okhttp整个架构是如何实现的。 一、什么是Okhttp HTTP是当今应用程序通过网络交换数据和媒体的方式。 有效地使用 HTTP 可以使应用加载得更快并节省带宽。 Okhttp是一个高效的HTTP Client,高效性体现在: Http / 2支持允许对同一主机的所有请求共享一个套接字 连接池减少了请求延迟 透明 GZIP 缩小了下载大小 对于重复请求,响应缓存可以完全避免网络请求 当网络出现问题时,OkHttp 不会立即结束: 它会默默地从常见的连接问题中恢复过来。 如果您的服务有多个 IP 地址,如果第一次连接失败,OkHttp 将尝试替代地址。 这对于 IPv4 + IPv6和承载于冗余数据中心的服务是必要的。 Okhttp 支持现代 TLS 特性(TLS 1.3、 ALPN、证书ping)。 它可以配置为回退到可用的连接。 并且Okhttp是易用的,其通过Builder模式设计请求 / 响应 API,支持同步阻塞调用和带回调的异步调用。 二、Okhttp的请求机制以及相关概念 首先我们来了解下HTTP client、request、response。 HTTP

小米路由器LuCI Web服务

旧时模样 提交于 2020-12-15 08:46:23
首先SSH进入小米路由器,具体办法看 http://www1.miwifi.com/miwifi_open.html 开启SSH服务。 LuCI的主文件目录在 /usr/lib/lua/luci dispatcher.lua中说明了 controller文件夹是控制器, view是模板目录 来源: oschina 链接: https://my.oschina.net/u/3861161/blog/1839731

SpringBoot和SpringMVC的区别

守給你的承諾、 提交于 2020-12-05 10:41:27
Spring MVC提供了一种轻度耦合的方式来开发web应用。 Spring MVC是Spring的一个模块,是一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。 Spring Boot实现了自动配置,降低了项目搭建的复杂度。 对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。 Spring 是一个“引擎”; Spring MVC 是基于Spring的一个 MVC 框架; Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。 来源: oschina 链接: https://my.oschina.net/u/2746716/blog/3128073

Kotlin Vocabulary | 揭秘协程中的 suspend 修饰符

痞子三分冷 提交于 2020-12-02 22:09:44
Kotlin 协程把 suspend 修饰符 引入到了我们 Android 开发者的日常开发中。您是否好奇它的底层工作原理呢?编译器是如何转换我们的代码,使其能够挂起和恢复协程操作的呢? 了解这些将会帮您更好地理解挂起函数 (suspend function) 为什么只会在所有工作完成后才会返回,以及如何在不阻塞线程的情况下挂起代码。 本文概要: Kotlin 编译器将会为每个挂起函数创建一个状态机,这个状态机将为我们管理协程的操作! 📚 如果您是 Android 平台上协程的初学者,请查阅下面这些协程 codelab: 在 Android 应用中使用协程 协程的进阶使用: Kotlin Flow 和 Live Data 协程 101 协程简化了 Android 平台的异步操作。正如官方文档 《利用 Kotlin 协程提升应用性能》 所介绍的,我们可以使用协程管理那些以往可能阻塞主线程或者让应用卡死的异步任务。 协程也可以帮我们用命令式代码替换那些基于回调的 API。例如,下面这段使用了回调的异步代码: // 简化的只考虑了基础功能的代码 fun loginUser(userId: String, password: String, userResult: Callback<User>) { // 异步回调 userRemoteDataSource.logUserIn { user

JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型

强颜欢笑 提交于 2020-11-24 14:21:33
  此系列博文基于同一个项目已上传至github   传送门   JavaWeb_(Struts2框架)Struts创建Action的三种方式   传送门   JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理   传送门   JavaWeb_(Struts2框架)Log4j的配置以及解决中文乱码   传送门   JavaWeb_(Struts2框架)参数传递之接收参数与传递参数   传送门   JavaWeb_(Struts2框架)Ognl小案例查询帖子   传送门   JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型   传送门   JavaWeb_(Struts2框架)拦截器interceptor   传送门   result是用于做输出的组建,用于向页面输出一些内容,转发重定向可以理解为特殊方式的输出,每一个result就是一个类   这些类都实现了共同的接口Result,struts2预置了10种类型的result,他们都被定义在struts-default.xml种   SSH项目->Referenced Libraries->struts2-core-2.5.16.jar中找到struts-default.xml,struts-default

聊聊jstack的工作原理

妖精的绣舞 提交于 2020-11-23 23:58:24
实现一个jstack 在聊Jstack得工作原理前呢,不如让我们先写一个简单的jstack玩玩。不用怕,很简单的,就几行代码的事,看: public class MyJstack { public static void main(String[] args) throws Exception { VirtualMachine virtualMachine = VirtualMachine.attach("6361" ); HotSpotVirtualMachine hotSpotVirtualMachine = (HotSpotVirtualMachine)virtualMachine; InputStream inputStream = hotSpotVirtualMachine.remoteDataDump( new String[]{}); byte [] buff = new byte [256 ]; int len; do { len = inputStream.read(buff); if (len > 0 ) { String respone = new String(buff, 0, len, "UTF-8" ); System.out.print(respone); } } while (len > 0 ); inputStream.close();

struts2框架学习笔记2:配置详解

六眼飞鱼酱① 提交于 2020-11-11 03:25:13
核心配置文件: <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd" > < struts > <!-- package:将Action配置封装.就是可以在Package中配置很多action. name属性: 给包起个名字,起到标识作用.随便起.不能其他包名重复. namespace属性:给action的访问路径中定义一个命名空间 extends属性(必填): 继承一个 指定包(这里使用的是默认) abstract属性(补充):包是否为抽象的; 标识性属性.标识该包不能独立运行.专门被继承 --> < package name ="hello" namespace ="/hello" extends ="struts-default" > <!-- action元素:配置action类 name属性: 决定了Action访问资源名,注意不是标识作用 class属性: action类的完整类名 method属性: 指定调用Action类中的哪个方法来处理请求 --> < action

滴滴JAVA后端面经 一二三三面

梦想的初衷 提交于 2020-11-08 13:02:39
滴滴三面面经 一面 1 反射你有了解吗?讲一下你的理解? 反射是java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。三种方式来获取Class对象:a.使用Class类的forName静态方法。b.直接获取某一个对象的Class。c.调用某个对象的getClass方法。 2 Java内存模型你知道吗? 一共分为方法区、堆、虚拟机栈、本地方法栈、程序计数器五个 1.方法区为线程共享区域主要存储虚拟机加载的类信息、常量、静态变量 2.堆区为线程共享区域存对象 3.虚拟机栈线程私有区域用于存局部变量表、操作数栈、动态链接等 4.本地方法栈线程私有区域与虚拟机栈类似,只不过本地方法栈为虚拟机使用到的Native方法服务 5程序计数器线程私有区域是字节码的行号指示器 3 StringBuilder/StringBuffer? StringBuilder是非线程安全的,StringBuffer是线程安全的,大部分情况下StringBuilder的速度是快于StringBuffer的,StringBuilder的append方法是带synchronized锁的。 4 AOP和IOC你知道多少? IOC是依赖注入,采用工厂模式。AOP是面向切面编程,采用代理模式。 5 类加载过程? 加载、验证、准备、解析、初始化 6 注解是什么?谈谈你的理解?