Hacker News new | past | comments | ask | show | jobs | submit | gantengx's comments login

Is there any message ordering guarantee in NATS? With Kafka you can achieve this by using keyed message and messages in the same partition will always be ordered

Disclosure: I work for Confluent


Not the same guarantees, no:

> messages from a given single publisher will be delivered to all eligible subscribers in the order in which they were originally published. There are no guarantees of message delivery order amongst multiple publishers.

https://docs.nats.io/faq#does-nats-offer-any-guarantee-of-me...


I believe with jetstream, message in stream is ordered as they are written. Jetstream have a concept of consumer, (in the broker itself, not client), which can consume a subset of the stream, filtered by message subject.


I've never really understood the appeal of ordered messages. You end up splitting your data across partitions anyways for parallelism, so who cares? What systems out there require strictly ordered data? It seems like any design that requires something like that is going to be extremely brittle.


> You end up splitting your data across partitions anyways

Messages are ordered within partitions.

> What systems out there require strictly ordered data? It seems like any design that requires something like that is going to be extremely brittle.

TCP/IP ?


> Messages are ordered within partitions.

Right, but that means you're still "unordered" across those partitions?

> TCP/IP ?

But TCP/IP isn't delivered in order, it rearranges the unordered packages by their ID. I guess ordered delivery would be nice for that, but I just feel like making your protocol not require ordering is far simpler.

Not to mention that both TCP and Kafka have to handle head of line blocking?

I'm not trying to say that ordering is bad or anything, I just feel like it isn't buying me tons.


> Right, but that means you're still "unordered" across those partitions?

Right, so related messages have an ordering guarantee but unrelated messages may be processed out of order relative to each other, which is usually what you want. (Of course you do have to set the record key correctly).

> I'm not trying to say that ordering is bad or anything, I just feel like it isn't buying me tons.

It's a lot more lightweight than full ACID, but if you get your dataflow right it achieves everything that a traditional database does. Without ordering you wouldn't be able to do anything that requires any kind of consistency.


Hm, ok, yeah. So I guess I can see what you mean. I've never had a use case where I felt comfortable relying on any kind of message ordering, and always rely on my application level logic to handle that, or ensure the system is resilient despite ordering (ie: commutative operations only).

To me, it seemed at odds with the parallelism of a partition, but I suppose in this case you'd be partitioning on some sort of semantic key vs, say, a hash.

Thanks for bearing with me on that, this was just an unfamiliar idea for me.


> But TCP/IP isn't delivered in order.. I guess ordered delivery would be nice

> both TCP and Kafka have to handle head of line blocking

Well which is it?

(If TCP doesn't give you ordered delivery, why would a head block the rest of the line?)


You can split with a business case in mind.

Maybe if you're an e-business, you'll split everything happening on your website by client id, but still want events belonging to a single client to be received in order, for practicality.


Exactly. We ran into same issue with Kafka. If one needs ordered messages for some reason, Kafka is pretty much useless for this.


Security Risk | Test Engineer & Project Manager | Singapore (Citizen/PR only) | ONSITE | FULL-TIME | https://securityrisk.com

We are a security-based start-up based in Singapore with its Australian parents’ company.

Currently we are looking for people (Singaporean citizens/PR) to join our fun loving team for the role below:

- Software Test Engineer: https://www.mycareersfuture.sg/job/software-test-engineer-se...

- Project Manager: https://www.mycareersfuture.sg/job/project-manager-technolog...

Our tech stack: Swift, Java, TypeScript, Mongo, Docker, Kubernetes, Helm


That's a really good summary. Thanks for posting it :-)


except that Hackintosh not exactly legal :-)


Breaking a contract is not illegal, it's a matter of civil law. And depending on where you live, such EULAs might not even be enforceable.


IANAL, but I believe breaking the terms and conditions violates the CFAA [1]

[1] - https://en.wikipedia.org/wiki/Computer_Fraud_and_Abuse_Act


Has Apple ever prosecuted a violation of this terrible rule of theirs?



That was a company selling Hackintoshes. In the many years since, Hackintoshes have remained a thing and I'm unaware of any individuals that have faced criminal or civil penalties.


Until recently, a Hackintosh was a time-consuming way of producing a somewhat worse Mac. As Apple is starting to drive us away, I bet the phenomenon will grow, and then Apple's interest in squishing it will too. And the fact is, Apple could shut this phenomenon down in a matter of hours if they wanted to.

This level of risk is fun but not for the faint of heart.


> Until recently, a Hackintosh was a time-consuming way of producing a somewhat worse Mac.

Oh? What has changed?

> This level of risk is fun but not for the faint of heart.

Read: as soon as a new patch comes out for macOS you are either running around with known security vulnerabilities (as well as missing reliability fixes), or you're a guinea pig entirely unsure if it breaks anything and if so how much effort it is going to take to get the patch applied. Why? Mainly due to drivers.

Besides, good luck finding a well working laptop with good macOS support.

I gave up and bought a MBP 2015 instead. Very nice machine. Expensive, but nice.

For a workstation or MP replacement it'd make more sense. The MP hasn't been updated for 4 years and with physical access to the quick machine its easier to fix issues. You're also guaranteed not on the go, so you got all the tools you need at your disposal. However there is still a risk for loss of productivity and worst of all you can't plan it. Because you don't know when Apple does release their software updates.


I guess it still is what I said, it's just that the cost/benefit ratio lately is different than it was five years ago.


I don't think it'd be wise of them to shut down the Hackintosh community. The vast majority of Hackintosh refugees aren't going to be buying Macs, they're going to be wiping their macOS partitions and jumping ship to Windows or some random Linux distro instead. It'd shrink the number of people invested in the Apple ecosystem (including subscriptions like iCloud and Apple Music) and put a bad taste in the mouths of a lot of people with sway of family/friend and perhaps even corporate purchasing decisions, not to mention strongly casts Apple in a Big Corporate Bully sort of light. There's not a scenario in which they kill off Hackintoshing that's a net benefit for Apple.


Apple is a hardware company. The services you mention are small in terms of revenue compared to their profits in hardware. If the Hackintosh community is large enough that the services revenue or impact on the ecosystem is signigicant, Apple would rather have the revenues associated with the hardware as well.

The fact that Apple hasn't done this already is because it's insignificant, not because of some benelovence on Apple's part. They're not going to encourage unlicensed use of the OS. The OS is there to sell the hardware, not vice versa.


There's the potential to create a pretty powerful machine for the buck, but it's definitely fraught with challenge. Reminds me of building a decent desktop Linux machine in the late 90's/early 2000's.


not really, i was running osx 10.5, so almost 10 years ago out of the box, the only thing that i had to play with was sound.

there was only one rule and i believe the same i truth now, if you plan to run hackintosh u better watch what hardware you get. if you do that u can run hackintosh without problems.


Eyeota | https://www.eyeota.com | Singapore | Fulltime | ONSITE | VISA

What we do: Eyeota is the global leader for audience data with over 2 billion unique profiles. Eyeota provides marketers with the data they need to reach the right online audiences and cut campaign waste whilst also enabling publishers to monetize their audiences more widely. In addition, our data delivers deep audience insight to both marketers and online publishers to help them understand their customers in a new way – as human beings. Eyeota supplies third party audience data to all major global and regional ad buying platforms, trading desks, DSPs, DMPs and ad networks. The company was founded in 2010 and has offices in Berlin, London, Melbourne, New York, Singapore, Sydney and Tokyo.

Who we're looking for: Full stack developer to join our team in Singapore. In this role, you will be working in close collaboration with a team of highly empowered, experienced developers who are building a high-performance, highly scaled global platform.

Some of the technologies that we use: Java, Clojure, Apache Cassandra, ElasticSearch, Kafka, Ember.js, Ansible

To apply: https://www.linkedin.com/jobs/cap/view/229867955?pathWildcar... or drop a comment


By the way, would be great if anyone who is applying to drop a comment here, so we can filter out non-HN applicants


Hello there, I think Singapore is hot! (Pun intended)

Location: Guangzhou China and/or Vancouver, Canada (Flying man) Willing to relocate: Yes Technologies: Interested in: Clojure, ClojureScript, Core Java, Reagent/OM, Machine Learning. I personally love functional programming style. But JVM is also awesome. So ... Clojure!

Resume/CV: https://www.overleaf.com/read/ymjbknwrdsnt https://ca.linkedin.com/in/gzmask Email: gzmask@gmail.com


Eyeota | https://www.eyeota.com | Singapore | Fulltime | ONSITE | VISA

Eyeota is the global leader for audience data with over 2 billion unique profiles. Eyeota provides marketers with the data they need to reach the right online audiences and cut campaign waste whilst also enabling publishers to monetize their audiences more widely. In addition, our data delivers deep audience insight to both marketers and online publishers to help them understand their customers in a new way – as human beings. Eyeota supplies third party audience data to all major global and regional ad buying platforms, trading desks, DSPs, DMPs and ad networks. The company was founded in 2010 and has offices in Berlin, London, Melbourne, New York, Singapore, Sydney and Tokyo.

We are looking for both experienced Backend developer (Java) and Full stack developer to join our team in Singapore and be instrumental in taking our products to the next level. In this role, you will be working in close collaboration with a team of highly empowered, experienced developers who are building a high-performance, highly scaled global platform.

Some of the technologies that we use: Java, Clojure, Apache Cassandra, ElasticSearch, Kafka, Ember.js, Ansible

Full Stack Developer: https://www.linkedin.com/jobs/cap/view/229867955?pathWildcar...

Backend Developer: https://www.linkedin.com/jobs/cap/view/229871315?pathWildcar...


Weird, normally hackernews won't allow duplicate links


Tried to edit the title but not successful, probably I exceeded the number of characters limit or something..


I think you can just build some webapp (front end can be very simple, just use angular.js with no styling at all) and focus on the backend?

Or if you absolutely don't want to touch front end at all, perhaps building API backend will do? Although it'll be much harder to showcase your skills


Check out Clojure for the Brave and True - http://www.braveclojure.com/


A reasonable recommendation. The book I'd recommend as an intro is Programming Clojure. It can be found used for cheap.


And after those you can try the "Joy of Clojure".


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: