首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的服务公共化实践

这个地方要注意线的失控,所谓线的失控就是服务间调用的失控,有些是通过lvs、有些是通过dns、有些是通过配置文件等等,如果有可能完成统一的标准制定,比如说我现在在UC用的就是名字服务中心。 ?...备注:我在统计学的角度也做了一个解释,组件越多,每个组件的维护能力下降,带来的可用性必然是很低,由此多组件构建的技术架构可用性是一个乘积效应。...备注:在来UC的一年多时间里,基本上把技术架构中公共需求都统一切到公共服务平台上。目前这些平台对某个运维人的依赖越来越低。...备注: 【公共架构团队】,必须要有一个公共架构团队,不过这个公共架构团队,适当的需要纳入业务研发团队的成员,避免需求偏离。 【强有力的领导】,没有强有力的领导,这套技术标准很难推行。...在研发侧,他们对运维的需求接口更简单了,服务更专业化。最终我们想做到的目标是,研发只需要编写业务逻辑代码就好了,其他的各个专业服务基于客户端Library的Api调用即可。

62910

Node.js 是什么?我为什么选择它?

一度认为这是很伟大的,在众多编程语言里,为什么会选择 JavaScript 呢?且看下面介绍。 为什么是 JavaScript?...为什么选择 JavaScript 作者 Ryan Dahl 应该是最有发言权的,这里查了一些资料及参考了 深入浅出 Node.js 一书,供大家有个初步的认知。...I/O 密集型场景 Node.js 的优势主要在于事件循环,非阻塞异步 I/O,只开一个线程,不会每个请求过来我都去创建一个线程,从而产生资源开销。...ResutFul API 通常我们可以使用 Node.js 来做为中间层,负责组装数据提供 API 接口给到前端调用,这些数据源可能来自第三方接口或者数据库,例如,以前可能我们通过后端 Java、PHP...最后一点建议:不要给自己设定边界,例如:我一定要学习 Node.js 或者我一定要学习 Java 又或者 Python,其实在有条件的情况下可以多接触一些其它东西,一方面扩展了自己的边界,另一方面自己也可以从中获取收益

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我所理解的接口设计

    我将从下面的方向来对我所理解的接口设计做个总结: 接口参数定义 -> 接口版本化的问题 -> 接口的安全性 -> 接口的代码设计 -> 接口的可读性 -> 接口文档 -> 我遇到的坑 接口参数定义 接口设计中往可以抽象出一些新的公共参数...,从事了近三年的接口开发工作中,我目前能想到了一些较为常见的公共接口参数如下: 公共参数 含意 定义该参数的意义 timestamp 毫秒级时间戳 1.客户端的请求时间标示 2.后端可以做请求过期验证...曾经也去调研了很多关于接口版本化的资料和设计,最后我得到的结论大致如下: 接口的版本区分为: 大版本 原则:大版本的数量最多控制到5个以内(我个人跟倾向于3个),超过版本限制的版本提示升级到新版本 方案...v=1.1 接口的安全性 接口的设计肯定绕不开安全这两个字,为了达到尽可能的安全,我们需要尽可能的增加被攻击的难度,以下是我了解和使用到的一些常见的手段去增加接口的安全性(https这里就不讨论了):...-> 缺少公共必传参数或者业务必传参数 401 -> 接口校验失败 例如签名 403 -> 没有该接口的访问权限 499 -> 上游服务响应时间超过接口设置的超时时间 500 -> 代码错误 501

    93880

    为什么我的BERT不行?

    当然了,bad case分析这块我也聊了很多,多分析能发现其中的端倪,知道模型需要什么,该怎么处理,我再放一遍在这里,希望能好好阅读。...训练层面的分析 BERT的训练其实挺多讲究的,这里的实验效果要保证对参数的有一定的要求,所以大家要多去观察训练过程暴露的问题,训练过程其实就是要观测loss变化、验证集效果等的问题,放置没学到、学飘了之类的问题...类似的思路其实我在这两篇文章里其实都有谈过: 心法利器[44] | 样本不均衡之我见 所以,很多时候你需要的可能是更多地挖掘数据,从日志,从更多渠道去找,这个可能比增强本身要好。...这里背后的逻辑可以参考我这篇文章: 心法利器[45] | 模型需要的信息提供够了吗 训练问题 针对训练问题,其实也就是一个经验的问题了,多弄其实问题就会小很多,大家可以多去看各个论文使用的超参,一般调的差不多基本都不会有的...而文章本身的输出并非是按照这个思路走,而是从一些大家经常问的点深入来讨论,希望能从我的角度和风格来思考和回答问题。

    1.2K20

    我所理解的接口设计

    我将从下面的方向来对我所理解的接口设计做个总结: 接口参数定义 -> 接口版本化的问题 -> 接口的安全性 -> 接口的代码设计 -> 接口的可读性 -> 接口文档 -> 我遇到的坑 接口参数定义 接口设计中往可以抽象出一些新的公共参数...,从事了近三年的接口开发工作中,我目前能想到了一些较为常见的公共接口参数如下: 公共参数 含意 定义该参数的意义 timestamp 毫秒级时间戳 1.客户端的请求时间标示 2.后端可以做请求过期验证...曾经也去调研了很多关于接口版本化的资料和设计,最后我得到的结论大致如下: ?...接口的代码设计 -> 解耦业务 即插即用 这个过程的关键字:抽象成类 前置中间件 注入 接着就是我们代码设计的层面了,如何抽象公共的部分与业务代码解耦。...重点来了,我提倡的第三般写法,对象链和前置中间件: ? 接口的可读性 关于可读性的不得不提到的就是RESTFUL,这里我就不讨论RESTFUL,大家可以自行补充相关知识。

    60820

    我的编码习惯 —— 接口定义

    工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。列举一下工作中我发现大家容易出现的问题: 1....返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...很多人看了我的这篇文章吐槽我见过的最烂的Java代码,都觉得里面的技术也很简单,没有什么特别的地方,但是,实现这个代码框架之前,就是要你的接口的统一的格式ResultBean,aop才好做。...有些人误解了,我那篇文章说的都不是技术,重点说的是编码习惯工作方式,如果你重点还是放在什么技术上,那我也帮不了你了。...同样,如果我后面的关于习惯和规范的帖子,你重点还是放在技术上的话,那是丢了西瓜捡芝麻,有很多贴还是没有任何技术点呢。 附上ResultBean,没有任何技术含量: ? ?

    59800

    我的编码习惯 - 接口定义

    工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。列举一下工作中我发现大家容易出现的问题: 1....返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...xxx return configService.add(); } 很多人看了我的这篇文章程序员你为什么这么累?...有些人误解了,我那篇文章说的都不是技术,重点说的是编码习惯工作方式,如果你重点还是放在什么技术上,那我也帮不了你了。...同样,如果我后面的关于习惯和规范的帖子,你重点还是放在技术上的话,那是丢了西瓜捡芝麻,有很多贴还是没有任何技术点呢。

    52530

    我所理解的接口设计

    我将从下面的方向来对我所理解的接口设计做个总结: 接口参数定义 -> 接口版本化的问题 -> 接口的安全性 -> 接口的代码设计 -> 接口的可读性 -> 接口文档 -> 我遇到的坑 接口参数定义 接口设计中往可以抽象出一些新的公共参数...,从事了近三年的接口开发工作中,我目前能想到了一些较为常见的公共接口参数如下: 公共参数 含意 定义该参数的意义 timestamp 毫秒级时间戳 1.客户端的请求时间标示 2.后端可以做请求过期验证...曾经也去调研了很多关于接口版本化的资料和设计,最后我得到的结论大致如下: 接口的版本区分为: 大版本 原则:大版本的数量最多控制到5个以内(我个人跟倾向于3个),超过版本限制的版本提示升级到新版本 方案...v=1.1 接口的安全性 接口的设计肯定绕不开安全这两个字,为了达到尽可能的安全,我们需要尽可能的增加被攻击的难度,以下是我了解和使用到的一些常见的手段去增加接口的安全性(https这里就不讨论了):...-> 缺少公共必传参数或者业务必传参数 401 -> 接口校验失败 例如签名 403 -> 没有该接口的访问权限 499 -> 上游服务响应时间超过接口设置的超时时间 500 -> 代码错误 501

    71170

    【译】 WinForms:分析一下(我用 Visual Basic 写的)

    在比利·克里斯托和罗伯特·德尼罗的推动下,剧情一定会很有趣。虽然《分析这一点!》讽刺性地处理了被漫画化的 MOB 世界的问题,但使用正确的分析工具找到问题的根源在任何地方都至关重要。...链接的博客文章提供了有关这些 API 的全面背景信息。 但是,选择错误的重载可能会导致应用程序中的代码路径不稳定。...通过确保至少存在其中一种机制,您可以避免意外的序列化行为,并确保在设计时 CodeDOM 序列化过程中正确处理您的属性。 但是……这个分析器破坏了我的整个解决方案!...所以,我对 WinForms 分析器有很好的想法 - 我可以贡献吗? 当然!WinForms 团队和社区一直在寻找改善开发人员体验的想法。...原文链接 WinForms: Analyze This (Me in Visual Basic)

    4200

    为什么我要写自己的框架?

    其实说白了框架就是使用别人造好的轮子。在软件开发里面就是command+C/command+V。 先自我介绍一下,我是一名信管专业的大学生,从我的专业可以看出我就是以后大家嘴里的程序员。...曾几何时,我觉得很兴奋,在如此短的时间内就可以做到这样的高度,让我十分的开心。开发出的内容也完全符合校内应用的需求。我变成了一个别人眼中的“大师”。 但事情并没有往想象的地方发展。...框架用的时间久了之后就发现了一个问题:我真的有学习过吗?我学的内容真的有用嘛,这些框架内的东西能对我今后有帮助吗,当然,这种想法不是一天形成的,还有一个小的故事。...但当有一天在讲授开发经验的时候,当我当着大家的面真的静下心来写我需要展示的一个类的时候,以前用了这么多的框架,我发现在这么多人面前的我已经几乎写不出来一个正确的类了!!...于是我又开始新的一轮学习,看大量的书籍,有一天我重新打开Yii框架在我当时看起来很难理解的代码的时候我发现:我居然有点明白它的工作原理,知道整体的架构了!

    1.3K20

    为什么我的Redis这么“慢”?

    如果你的服务请求量并不大,但 Redis 实例的 CPU 使用率很高,很有可能是使用了复杂度高的命令导致的。...同样的,当删除这个 Key 的数据时,释放内存也会耗时比较久。 你需要检查你的业务代码,是否存在写入大 Key 的情况,需要评估写入数据量的大小,业务层应该避免一个 Key 存入过大的数据量。...内存中的的数据写入磁盘,这个会加重磁盘的 IO 负担,操作磁盘成本要比操作内存的代价大得多。...下面就针对这两块,分享一下我认为比较合理的 Redis 使用和运维方法,不一定最全面,也可能与你使用 Redis 的方法不同,但以下这些方法都是我在踩坑之后总结的实际经验,供你参考。...总结 以上就是我在使用 Redis 和开发 Redis 相关中间件时,总结出来 Redis 推荐的实践方法,以上提出的这些方面,都或多或少在实际使用中遇到过。

    3.7K10

    我的编码习惯 —— API 接口定义

    来源:https://zhuanlan.zhihu.com/p/28708259 工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口。接口定义一定程度上能反应程序员的编程功底。...列举一下工作中我发现大家容易出现的问题: 1. 返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。...xxx return configService.add(); } 很多人看了我的这篇文章 程序员你为什么这么累?...有些人误解了,我那篇文章说的都不是技术,重点说的是编码习惯工作方式,如果你重点还是放在什么技术上,那我也帮不了你了。...同样,如果我后面的关于习惯和规范的帖子,你重点还是放在技术上的话,那是丢了西瓜捡芝麻,有很多贴还是没有任何技术点呢。

    78440

    如果Node.js已具备反向代理的功能,我为什么要使用反向代理?

    世界上大多数最大的公司都以Node.js的某种方式供电。说Node.js是生产就绪的当然是轻描淡写。...但是,自Node.js诞生以来,有一条建议是正确的:不应该直接将Node.js进程暴露给Web,而应该隐藏在反向代理之后。但是,在我们搞清楚为什么要使用反向代理之前,让我们首先看一下它是什么。...既然我们知道反向代理是什么,我们现在可以看看为什么我们想要使用Node.js。 我为什么要使用反向代理? SSL终止 SSL终止是使用反向代理的最常见原因之一。...这样的工具允许其他强大的功能,如粘性会话,蓝/绿部署,A / B测试等。我个人在代码库中工作,在应用程序中执行此类逻辑,这种方法使应用程序很难维护。 性能优势 Node.js具有很强的可塑性。...所需的应用程序代码量也减少了。我强烈建议您在下一个生产Node.js应用程序时使用反向代理。

    1.6K40

    为什么我的HibernateDaoSupport没有注入SessionFactory

    前言 很早之前,就打算写这一篇文章了(其实有很多源码分析的文章打算写,但是自己太拖延了导致很多文章搁浅了)。我为什么要写这一文章呢?...事情的缘由是同事在SpringBoot项目中有一个A类继承HibernateDaoSupport,但是程序运行总是抛出没有成功注入SessionFactory的错误,后来我debug Spring源码解决了这个问题...调用invokeBeanFactoryPostProcessors中处理触发所有的BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor接口回调...AbstractApplicationContext类.png 3.在PostProcessorRegistrationDelegate中,获取实现PriorityOrdered接口的BeanDefinitionRegistryPostProcessor...ConfigurationClassPostProcessor类.png 4.我们可以去实现BeanDefinitionRegistryPostProcessor接口,把MyBaseDao的BeanDefinition

    3.1K10
    领券