草庐IT

Java项目是不是分布式,真有那么重要吗?

Java3y 2023-03-28 原文

大家好,我是3y啊。

大概不知道从什么时候,「微服务」「分布式」这两个词又再次频繁出现在我的视线里。

「微服务」「分布式」在我刚毕业的时候还是比较关注的,那时候还入门了一把SpringCloud,写了一篇很长的文章,还是很顶的,有不少的大号都给我转载了,在知乎又获得了很多的赞。

那时候觉得懂「分布式」「微服务」是关键,什么SSM/SSH这不是谁都会吗,靠SSH/SSM我怎么有竞争力找工作啊。

后来工作以后,对这块技术栈就没怎么深入去看过了,毕竟我不是在公司里搞RPC框架组件的,把时间都专注于自己的业务系统里去了。

工作了之后,有的同事跳槽去了阿里/字节,我看他们简历也没写自己懂「微服务」「分布式」,也没见他们在简历上有Dubbo和SpringCloud这种技术栈,但这也没影响他们跳去字节和阿里这种公司。

同理,我在去年跳槽的时候,我的简历也没有这块内容。面试下来,也仅仅只有一个面试官随口提了下我懂不懂SpringCloud的原理。我跟他说我对这块了解不深,只知道大致的过程,他也没为难我,直接就跳过了。

而我现在工作的内容也没有大量涉及到Dubbo/SpringCloud这种技术栈的组件去使用,所以跟大家比起来,我这块技术栈还是很薄弱。可能等我下次跳槽的时候,这块东西我还是写不上简历去。

回到正题上吧,最近「微服务」「分布式」这两个词又再次频繁出现在我的视线里,最主要的可能是我做了个开源项目「Austin」,有挺多人问我这个项目是不是分布式的

开源项目消息推送平台austin仓库地址:

消息推送平台?推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型

可以明确地告诉大家,它并不是「分布式」「微服务」的项目。目前到此为止,它核心就只有一个发送的接口,而且只能通过HTTP的方式去调用。

那他能做成一个「分布式」项目吗?答案也是可以的,只要把「服务治理」相关的组件引入就可以问题了。现在是项目是分开module模块的,austin-web(管理后台)/austin-cron(定时任务)/austin-api和austin-api-impl(接入层)/austin-handler(下发逻辑处理层)这几个都可以单独抽出来部署

(实际上在线上环境里,也是这么干的)

单独部署了以后,再通过「服务治理」的组件进行管理,那系统就是「分布式」的架构了。听着听不难,对不对?实际上也确实不难。

既然如此,为什么我一直都没去变动我的系统呢?最核心的点在于:我认为以我这类系统来说,功能的完整性比「分布式」这种架构模式更加重要。

又因为我的工作历程导致我一直在生产环境下就没有很多条件去深入接触这些「服务治理」的组件,我对它们是不熟悉的。而且我个人对此类框架又没有很浓厚的兴趣,我喜欢把重点放在存储的组件上(更愿意把时间花在Redis/MySQL/HBase/Elasticsearch这些)

最近,我看股东群有好多都是在备战校招的,也见证了整个校招环境确实是越来越卷了,在这我给个小tips吧。

其实吧,我觉得作为应届生在面试的时候是不太需要过于在意「分布式」。以我做面试官的角度而言,在正式工作之前,能有啥场景给你深入去做「分布式」系统。

除非你简历真的写了挺多的分布式内容,不然我是不会把「分布式」作为面试校招生的重点(如果你都真的懂了,那确实是可以拉开差距的,前提是你的基础知识表现都不错)。如果你没写,那我真的就不会去问这块内容。

简历上写的技术栈最好是自己比较熟悉的,只是用过但不懂原理的可以去掉,简历上的技术栈并不是越多越好

祝愿备战的小伙伴都能早日上岸

开源项目消息推送平台austin仓库地址:

消息推送平台?推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型

有关Java项目是不是分布式,真有那么重要吗?的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  5. ruby - 使 faSTLane 不那么冗长 - 2

    有没有办法配置(例如,可以使用Fastfile)或以更简洁的方式执行FaSTLane?它目前打印出很多信息,这些信息通常会使开发人员对警告和错误视而不见。主要问题是需要花费一些时间在大量无用消息中滚动和搜索黄色/红色文本,直到您了解发生了什么。默认设置会打印所有内容,令人惊讶的是甚至还有--verbosemode对于CLI,但我找不到任何相反的东西,例如--quiet模式。编辑:下面是一些我希望能够抑制的输出示例。考虑到我使用了来自gitrepo的Fastfile,gym、match、cocoapods、get_version_number、increment_version_numb

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  8. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  9. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  10. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

随机推荐