Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Rust and RPC at OkCupid (okcupid.com)
63 points by mikeokc on March 21, 2017 | hide | past | favorite | 10 comments


This is my project! Ask me any questions if you have them. This was a fun project to work on.


This looks great! I'm psyched you are enjoying Rust.

Once you end up with something in production, if you're interested on being on https://www.rust-lang.org/en-US/friends.html, there's a link at the bottom of the page :)


I'd love that. I'll definitely let you all know when that time comes.


Awesome. Don't hesitate to reach out if you ever need anything.


Yay XDR! I still haven't heard a good explanation as to why Google invented Protocol Buffers when XDR already existed and was mature (it powers NFS).


Literally guessing here, but does XDR support backwards compatibility with updated definitions? Protobufs let you add a property to a definition as long as it's at the end of the object definition, yet objects encoded in the old definition can still be decoded with it and vice versa.


> We use XDR - RFC 4506 and RPCv2 - RFC 1831 to communicate between our servers.

I see the appeal in using the same format everywhere, but it seems like they'd have a easier time using something with more mindshare, like Protocol Buffers, or even Thrift or Cap'n Proto.

All of those have Rust implementations, for instance, so you wouldn't have to implement your own parser.


Completely agree. I was wondering the same thing as I read this.


OkCupid is over a decade old. XDR was pretty good back when people started writing our services.

My goal here isn't to migrate our RPC system... yet. My goal is to stand up Rust services in production. I need to be able to issue calls between services and thus, I need it to speak XDR. Migrating your RPC system in a production website is a non-trivial task.

I've done some investigation into switching to something like flatbuffers or cap'n proto. That's a project for another day though.


That makes sense. Thanks for explaining!




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

Search: